0
我是新来的AS3,似乎忽略东西有关的类和/或定位。我在我的图书馆中有一个与名为'云'的类相关联的MovieClip(是的,云只是一片雨云的图片)。我想在舞台上添加云。我知道有两种方法可以做到这一点:添加影片剪辑到阶段
- 将它直接从库中拖到舞台上。
- 使用AS3将addChild添加到舞台。
当我使用“从库直接拖到舞台上”方法发布我的swf时,该类将工作。但是,当我尝试使用AS3方法时,它不起作用。
类如下:
package {
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
public class cloud extends MovieClip {
public function cloud() {
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyMapping);
}
private function keyMapping(event:KeyboardEvent):void {
if (event.charCode == 13) {
MovieClip(parent).testme.text = "hello world!";
}
}
}
}
我一直在使用我的主时间轴的第1帧AS3:
stop();
var cloud_mc:cloud = new cloud();
addChild(cloud_mc);
============ ================================================== ====================
建议的修复
类别:
package {
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
public class cloud extends MovieClip {
public function cloud() {
}
public function tralala() {
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyMapping);
}
private function keyMapping(event:KeyboardEvent):void {
if (event.charCode == 13) {
MovieClip(parent).testme.text = "hello world!";
}
}
}
}
AS3:
stop();
var cloud_mc:cloud = new cloud();
addChild(cloud_mc);
cloud_mc.tralala();
链路张贴给出了一个详细说明。一个简短的版本是:右键单击库项目,确保勾选了[x]导出动作脚本,然后从“类”字段复制值并使用它代替云类。 –
谢谢!我想我现在明白了,而且我刚刚修改了我原来的帖子并提供了一个建议的修复方法 - 我们正在谈论的是什么?建议的修复方法确实有效,但我只想确保我正确地/正确地执行此操作。 – Actionman
看起来正确。只需要注意一点:您发布的代码对于类和库链接都具有相同的名称。这是允许的,但可能会导致混淆,如果您有多个库项目具有不同的链接ID,它们都会扩展相同的类。例如,你可以将8个不同的小行星图形命名为“asteroid1”到“asteroid8”,它们都扩展了Metroid类。在这种情况下,你需要做“新的metroid1()”而不是“新的Metroid()”。 –