Flash/Flex学习笔记(33):如何用As3协同Flash CS IDE控制MovieClip实例

AS3历经若干年的成长,已经完全进化为一门面向对象的(动态)语言,但很多介绍AS3的书籍上往往只注意了AS3语言本身,而淡化了如何跟Flash IDE协同开发。

1.如何在Flash时间轴代码上创建一个外部as文件中定义的MovieClip实例?

假设外部有一个MyClip.as文件,内容如下:

package {
	import flash.display.MovieClip;

	public class MyClip extends MovieClip {
		public function MyClip():void{
			trace("MyClip constructor is called");
		}
	}
}

新建一个fla文件(注意:要与MyClip.as处于同一目录),然后在时间轴的代码中就可以这样使用了:

var clip1:MyClip = new MyClip();

Ctrl + 回车 测试影片,将会在输出窗口看到:MyClip constructor is called

但这样可能有人会郁闷了:这样的话,所有东东都要纯AS代码来控制,那还要Flash CS干啥?不如直接用记事本写,然后编译下完事,这样根本体现不出Flash IDE实时设计的强大。--往下看

2.如何用代码从库里取出一个用Flash设计好的MovieClip实例?

上图是在Flash CS4中创建一个Symbol时的界面,注意高亮部分,我们可以在创建时指定类名以及父类,这样该Symbol就可以用代码引用了,我们可以利用Flash的强大设计功能先弄好布局,放置一些控件,比如动态文本,然后在代码中使用(注:下面代码中的txtMsg是MyClip2上放置的一个动态文本)

var clip:MyClip2 = new MyClip2();
clip.txtMsg.text = "Hello World!";
clip.x = 0;
clip.y = 0;
clip.width = stage.stageWidth;
addChild(clip);

3.把上面二种情况结合起来

即:如果我们先在Flash Cs4中创建一个MovieClip类型的Symbol(同时参照2中的方法指定了类名MyClip3);然后再到同级目录下新建一个MyClip3.as文件,这二者能结合在一起用么?

MyClip3.as文件内容如下:

package {
	import flash.display.MovieClip;

	public class MyClip3 extends MovieClip {
		
		public function MyClip3():void{
			trace("MyClip3's constuctor is called.");
			
			txtMsg.text = "MyClip3's constuctor is called.";//引用Flash CS设计时放置在MyClip3元件上的动态文件txtMsg
		}
		
		//将txtMsg.text封装成属性Msg
		public function set Msg(v:String):void{
			trace("Msg setter is called");
			txtMsg.text = v;			
		}
		
		
		public function get Msg():String{
			trace("Msg getter is called");
			return txtMsg.text;		
		}
		
	}
}

主场景中的时间轴代码可以这么用:

var clip:MyClip3 = new MyClip3();
clip.txtMsg.text = "Hello World!";
trace(clip.Msg);
clip.Msg = "Hi";
clip.x = 0;
clip.y = 0;
clip.width = stage.stageWidth;
addChild(clip);

运行后输出窗口内容如下:

MyClip3's constuctor is called. Msg getter is called Hello World! Msg setter is called

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏晓晨的专栏

.NET Core 实现定时抓取博客园首页文章信息并发送到邮箱

893
来自专栏大内老A

WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity)

对于一般的多线程操作,比如异步地进行基于文件系统的IO操作;异步地调用Web Service;或者是异步地进行数据库访问等等,是和具体的线程无关的。也就是说,对...

1957
来自专栏大内老A

WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity)

对于一般的多线程操作,比如异步地进行基于文件系统的IO操作;异步地调用Web Service;或者是异步地进行数据库访问等等,是和具体的线程无关的。也就是说,对...

23710
来自专栏Java与Android技术栈

Android App安全防范措施的小结

关闭打印的日志,防止日志中的调试信息被看到。如果在网络框架中使用了日志,那就更加需要关闭了。

1102
来自专栏c#开发者

Angularjs 通过asp.net web api认证登录

Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,member...

3447
来自专栏逸鹏说道

我这么玩Web Api(一)

帮助页面或用户手册(Microsoft and Swashbuckle Help Page) 前言   你需要为客户编写Api调用手册?你需要测试你的Api接口...

3125
来自专栏函数式编程语言及工具

Akka(10): 分布式运算:集群-Cluster

   Akka-Cluster可以在一部物理机或一组网络连接的服务器上搭建部署。用Akka开发同一版本的分布式程序可以在任何硬件环境中运行,这样我们就可以确定以...

5979
来自专栏有刻

Java 小记 — RabbitMQ 的实践与思考

39310
来自专栏技术小讲堂

iBatis.Net(5):Data Map(了解)

总算,总算,能写点示例啦,呵呵,其实前面的几篇,我感觉自己写的也很生硬,没有Demo理解起来是很困难,很多名词,反正我初次接触iBatis的时候,是一点也不理解...

3406
来自专栏申龙斌的程序人生

Bigone API 升级到v2,害死程序员

最近调动到北京工作,以前开发的三角套利程序竟然不能正常运行了,真是币圈一天,人间一年。最近稍微有一点点空闲时间,重拾搬砖程序,却发现Bigone的API已经发生...

1863

扫码关注云+社区

领取腾讯云代金券