5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:北京
性别:先生
最后登录:2014-08-29
http://veteran.5d.cn/
www.toswf.com
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2004/12/01 | 让movieClip扩展类不依赖于库中的某个symbol!!
类别(Flash)
|
评论
(0)
|
阅读(152)
|
发表于 09:25
(转载自JimLee Bloging)
尝试运行下面的代码:
//Actor.as:
class Actor extends MovieClip {
static var id = (id="__Packages.Actor")+(Object.registerClass(id,Actor)?"":"");
public function Actor() {
trace("Action!");
}
}
//测试:
import Actor;
attachMovie(Actor.id, "_mc", 1);
有些什么发现了?
在我们的经验中,好像要使用MovieClip扩展类,就必须让该类通过linkpackage的方式链接到lib中的某个具体的MC或者button上。Peter Hall发现,由于flashMX2k4约定使用“__Packages.”前缀命名内置的类,如果我们通过Object类的静态方法registerClass,可以“欺骗”flashMX2k4的编译器,从而不需要在库中创建相关的symbol也可以使用MC扩展类!
下面的示例也许更加实用:
mycustommc.as
dynamic class mycustommc extends MovieClip
{
//创建静态方法,大家可以查一查Object.registerClass()的用法
static function register()
{
Object.registerClass("__Packages.mycustommc",mycustommc);
}
function mycustommc()
{
this.beginFill(0xCCCCCC,50);
this.lineStyle(1,0xFF0000,100);
this.moveTo(0,0);
this.lineTo(10,0);
this.lineTo(10,10);
this.lineTo(0,10);
this.endFill();
}
function move(aX:Number,aY:Number)
{
this._x = aX;
this._y = aY;
}
}
//测试
import mycustommc;
mycustommc.register();
it1 = attachMovie("__Packages.mycustommc","mycustommc1",getNextHighestDepth());
it1.move(100,100);
it2 = attachMovie("__Packages.mycustommc","mycustommc2",getNextHighestDepth());
it2.move(300,100);
0
评论
Comments
日志分类
首页
[185]
Flash
[123]
ColdFusion
[2]
Flex
[2]
FlashMedia
[3]
RIA
[4]
Other
[43]
Python
[0]
Design
[8]