flash开发中如何实现界面代码分离

“flash开发”发展到今天,大体上已经细分为二个分支:Flash 设计师 和 Flash程序员,然而设计师不懂代码,程序员不懂设计,如何把这二种角色有机结合起来,实现代码、界面分离?可能下面的办法对你有用:

 

actionscript3允许把外部swf直接用Embed标记嵌入到主类中(当然用UrlLoader动态加载也行),这意味着设计师们可以把一些常用的与代码无关的素材(比如按钮,图片,小动画),以他们喜欢的方式,用Flash CS工具设计好放到库中。

 

然后程序员把这类包含(皮肤)素材的swf嵌入到程序代码中,用代码创建相应的实例,这样程序员用flash builder/flashdevelop做开发,设计师用flash cs做设计,互不相干。

 

关键点:

设计师把素材放入到库中时,一定要指定类名,这样代码才能创建这些类的实例。

 

如上图所示,这里库中放了三种基本的素材(按钮,位图,电影夹),然后在代码中可以这样处理:

package
{

	import flash.display.Sprite;
	import flash.display.DisplayObject;
	import flash.display.SimpleButton;
	import flash.events.MouseEvent;
	import flash.display.MovieClip;
	import flash.display.BitmapData;
	import flash.display.Bitmap;

	public class Demo extends MovieClip
	{
		[Embed(source = "skin.swf",symbol = "ButtonPause")]
		private var ButtonPause:Class;

		[Embed(source = "skin.swf",symbol = "ButtonPlay")]
		private var ButtonPlay:Class;

		[Embed(source = "skin.swf",symbol = "LogoImage")]
		private var LogoImage:Class;

		[Embed(source = "skin.swf",symbol = "TestMovie")]
		private var TestMovie:Class;

		public function Demo()
		{
			init();
		}

		private function init():void
		{
			var btnTest:SimpleButton = new ButtonPause() as SimpleButton;
			trace(btnTest,btnTest is SimpleButton);//Demo_ButtonPause0,true
			addChild(btnTest);
			btnTest.x = btnTest.y = 50;
			btnTest.addEventListener(MouseEvent.CLICK,btnTestClick);

			var btnTest2:SimpleButton = new ButtonPlay() as SimpleButton;
			trace(btnTest2);//Demo_ButtonPlay1
			addChild(btnTest2);
			btnTest2.y = 50;
			btnTest2.x = 100;
			btnTest2.addEventListener(MouseEvent.CLICK,btnTest2Click);

			var bmd:Bitmap = new LogoImage() as Bitmap;
			trace(bmd);//Demo_LogoImage2
			addChild(bmd);
			bmd.x = bmd.y = 200;

			var testMovie:MovieClip = new TestMovie() as MovieClip;
			addChild(testMovie);
			testMovie.x = testMovie.y = 180;
			trace(testMovie);//Demo_TestMovie3

		}

		private function btnTestClick(e:MouseEvent):void
		{
			trace("btnTest 被点击了!");
		}

		private function btnTest2Click(e:MouseEvent):void
		{
			trace("btnTest2 被点击了!");
		}
	}

}
时间: 2025-01-01 14:29:38

flash开发中如何实现界面代码分离的相关文章

flex中使用swc实现更好的界面代码分离

前几天写过一篇"flash开发中如何实现界面代码分离",评论中 小-G 同学给出了更好的建议:swc ,今天试用了一下,果然比较embed swf来得更爽!同时对小-G同学表示感谢! 就拿视频播放器的控制来说吧: 通常我们会把一些常规的控制按钮,利用Flash CS的IDE界面做好,放到库中 如果按embed swf的方法,需要手动用代码创建每种按钮的实例,然后一个个去控制位置,然后addChild:其实考虑到实际场景中,这类按钮总在一起出现的,不如把他们放在一起(类似asp.net中

安卓开发中某一个界面还没等你操作呢 自己就没了 哪里出问题了?

问题描述 安卓开发中某一个界面还没等你操作呢 自己就没了 哪里出问题了? 问题如上 好困惑! 解决方案 自己就没了,是返回上一级页面么?还是什么?有可能是AndroidManifest.xml文件里activity配置的问题.. 解决方案二: 出现fatal crash了把,抓下log看看. 解决方案三: 贴出代码,贴出log,才好分析,这样描述太抽象 解决方案四: 看一下log日志,看看错误信息. 解决方案五: 这个问题问的有点抽象能不能再具体些

安卓 app 形状 绘制-请教,安卓app开发中,能用代码绘制一个纯文本意义的纯色的胶囊形状吗

问题描述 请教,安卓app开发中,能用代码绘制一个纯文本意义的纯色的胶囊形状吗 请教,安卓app开发中,能用代码绘制一个纯文本意义的纯色的胶囊形状吗,还是要用png图片代替呢,各有什么有缺点呢 解决方案 可以直接画,定义圆角的弧度,其他用纯色填充,形如: radius就是角度 字面意思比较清楚,你看看 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://s

PHP开发中常用的十个代码样例_php实例

一.黑名单过滤 function is_spam($text, $file, $split = ':', $regex = false){ $handle = fopen($file, 'rb'); $contents = fread($handle, filesize($file)); fclose($handle); $lines = explode("n", $contents); $arr = array(); foreach($lines as $line){ list($w

安卓开发中加入侧滑界面后,单击按钮没反应。求大神。

问题描述 安卓开发中加入侧滑界面后,单击按钮没反应.求大神. 解决方案 你给按钮写点击事件了没有? 解决方案二: 我写了啊,但是就是不行啊 解决方案三: 你是在fragment 中实现的吧,点击写在XML中的?必须写在fragment中:

java开发中通用分页类代码

java开发中通用分页类代码 在java中要分页我们必须要有数据库教程,所以我们先准备下数据库,其数据库脚步如下: --以下是创建数据库和数据库表以及向数据库插入数据   use master  Go  if exists(select * from sysdatabases where name='pagination')  drop database pagination  Go  create database pagination  Go  use pagination  Go  cre

php开发中实用的PHP代码片段

1.关键词高亮  代码如下 复制代码 function highlight($sString, $aWords) {  if (!is_array ($aWords) || empty ($aWords) || !is_string ($sString)) {   return false;  }  $sWords = implode ('|', $aWords);   return preg_replace ('@b('.$sWords.')b@si', '<strong style="

SQL数据库开发中的一些精典代码

1.按姓氏笔画排序: select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: select encrypt('原始密码') select pwdencrypt('原始密码') select pwdcompare('原始密码','加密后密码') = 1--相同:否则不相同 3.取回表中字段: declare @list varchar(1000),@sql nvarchar(10

安卓开发中动态添加lsitView 代码实例

 这个很简单 就是为了说明别忘了adapter.notifyDataSetChanged(); 唤醒一下,其实这个唤醒也就是在button下用 或者在别的控件下调用 如果是在getView下就不必了 java代码: public class DynamicListItems extends ListActivity { private static final String ITEM_KEY = "key"; ArrayList<HashMap<String, String