UI组件:动态换肤原型

>>设计要点

外部皮肤(swf)的动态加载  +  swf中皮肤类的动态实例化(反射) +  事件广播机制

 

>>技术实现要点:皮肤swf的制作

创建swc工程,然后对swc文件进行解压缩,得到library.swf,将其更名,以备使用。

*该swf文件的特点是没有文档类(可执行程序入口),是纯粹的“功能类库”。

  目前还没有找到可以直接生成该类型文件的IDE。

 

>>原型示例代码

1.  皮肤swf: 1.swf

package
{
	public class Class1
	{
		public function sum():int{
			return 1;
		}
	}
}


2.  皮肤swf: 2.swf

package
{
	public class Class1
	{
		public function sum():int{
			return 2;
		}
	}
}


 

3. 动态载入皮肤并切换皮肤的可执行程序

    在stage上点击鼠标,画面上显示文字将在"1"和"2"之间切换。

package 
{
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
	import flash.text.TextField;
	

	public class Main extends Sprite 
	{
		public var loader:Loader = new Loader();
		public var txt:TextField = new TextField();	
		public var swfName:String = "1.swf";
		
		public function Main():void 
		{
			addChild(txt);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
			
			stage.addEventListener(MouseEvent.CLICK, mouseClick);
		}

		private function mouseClick(e:Event):void
		{
			var url:URLRequest = new URLRequest(swfName);
			loader.load(url);
			
			if (swfName == "1.swf")
			{
				swfName = "2.swf";
			}else {
				swfName = "1.swf";
			}

		}
		
		private function loadComplete(e:Event):void
		{
			var cls:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("Class1") as Class;
			var obj:Object = new cls();

			txt.text = obj.sum();

		}
		
	}
	
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值