这个问题可能很容易解决,但我不清楚.可能只是我做错了事.我已经研究了OOP和AS3几个小时,所以我熟悉概念但不熟悉流程.这是我整理的一个项目,以加强我一直在学习的东西.
这里的目标是从库中将预先创建的动画片段的实例加载到舞台,然后在FLA的时间帧ActionScript中执行定位功能,并在AS文件的ActionScript类中执行一个函数,以调整动画片段的大小并输出跟踪.
我有两个文件:smileface.fla smileface.as
在smileface.fla中,我有一个驻留在我的库中的MovieClip对象.它具有以下相关属性......
Name: faceInst Class: smileface Base Class: null
我有一个框架(关键帧),它包含以下ActionScript:
var faceInst:smileface = new smileface(); this.addChild(faceInst); faceInst.x = stage.stageWidth/2; faceInst.y = stage.stageHeight/2;
在我的smileface.as文件中,我有以下代码:
package { import flash.display.MovieClip; import flash.display.Stage; public class smileface extends MovieClip { public function smileFunction() { this.width = stage.stageWidth/5; this.height = stage.stageHeight/5; trace("Done!"); } } }
我希望(没有理由这样做)在加载movieclip对象之后,它将根据规范调整大小,然后输出跟踪.
然而,相反的是,面部显示在舞台上,居中,但没有调整大小,并且根本不输出轨迹.
如果你想要它作为构造函数,它需要与文件相同的名称,笑脸而不是微笑功能
当您在将实例添加到舞台之前创建实例时,构造函数中对舞台宽度的调用将为null.你应该将它移动到添加到框架事件监听器:
package { import flash.display.MovieClip; import flash.display.Stage; public class smileface extends MovieClip { public function smileFace() { addEventListener(Event.ADDED_TO_STAGE, init); } public function init(ev:Event){ this.width = stage.stageWidth/5; this.height = stage.stageHeight/5; trace("Done!"); } } }