为flash程序制作皮肤【皮肤映射类Skin】
为flash程序制作皮肤【皮肤映射类Skin】转载自http://www.wedoswf.com/posts?page=83skin类是一个为了更方便的访问皮肤中的对象而设计的类文件。 在flash中每次都要很麻烦的用getChildAt或getChildByName一层一层的来访问皮肤中的元件,这里设计了一种更简洁的方式来获得设计人员制作的flash文件中的元件或绑定类。 示例文件从这里下载:skin-sample 我们先来看看示例皮肤文件中的类绑定截图 先用皮肤的文档类继承Skin类,skin类继承了Sprite类,所以不用担心文档类需要继承Sprite的问题 皮肤文件端: package { import flash.display.Sprite; import com.monboo.skin.Skin; public class CatSkin extends Skin { public function CatSkin() { } } } 再在文档类的构造方法中定义皮肤中提供的对象。 通过三种方法定义皮肤中的对象 最后在加载皮肤的应用程序端访问皮肤中的对象: /******** ** load skin *********/ var albumSkin:Object; var __albumSkin:Class; var skinUrl:String="http://www.xncat.com/wp-content/uploads/2010/05/catSkin.swf"; loadSkin(); function loadSkin():void { var loadSkin:Loader = new Loader(); var context:LoaderContext = new LoaderContext(); context.checkPolicyFile=true; context.applicationDomain=new ApplicationDomain(ApplicationDomain.currentDomain); loadSkin.load(new URLRequest(skinUrl),context); loadSkin.contentLoaderInfo.addEventListener(Event.COMPLETE,skinLoadedFunc); } function skinLoadedFunc(e:Event):void { __albumSkin=e.target.applicationDomain.getDefinition("CatSkin") as Class; albumSkin = new __albumSkin(); trace("[Skin loaded successfully!]"); } 主要有三种访问皮肤内容的方法 addClass(ThumbUI,"ThumbUI"); addClass(ThumbDrag,"ThumbDrag"); addClass(CtrlUI,"CtrlUI"); addClass(PlayerBoxUI,"PlayerBoxUI"); 加载皮肤的应用程序端: var thumbDrag:Class = albumSkin.$c("ThumbDrag") as Class; var thumbUI:Class = albumSkin.$c("ThumbUI") as Class; var ctrlUI:Class = albumSkin.$c("CtrlUI") as Class; var playerBoxUI:Class = albumSkin.$c("PlayerBoxUI") as Class; 2 . 访问皮肤中的显示对象模块 addClass(VolumeControl,"VolumeControl"); addUI("VolumeControl","vControl"); 加载皮肤的应用程序端: addChild(albumSkin.$c("vControl")); 3 . 访问皮肤中的 显示对象模块中的某一个ui addClass(VolumeControl,"vControl"); addMap("soundLine","vControl.volumUp.soundLine"); 加载皮肤的应用程序端: var soundLine:Sprite = albumSkin.$("soundLine")); 注:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |