如何从doc类AS3的舞台上定位影片剪辑?
问题描述:
我正在做动态拖放游戏。 我有一个包含拖放代码的拖动项目的类。如何从doc类AS3的舞台上定位影片剪辑?
我的问题是我不能打电话/访问我已经放在我的命中测试声明中的舞台上的电影剪辑。
这里是我的代码和target1_mc & target2_mc是舞台上的现有影片剪辑:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
public class recipeMC extends MovieClip {
private var startX:Number;
private var startY:Number;
private var counter:Number=0;
public function recipeMC() {
this.mouseChildren = false;
this.buttonMode = true;
this.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
this.addEventListener(MouseEvent.MOUSE_UP, dropIt);
}
private function pickUp(event:MouseEvent):void {
this.startDrag(true);
this.parent.addChild(this);
startX = this.x;
startY = this.y;
}
private function dropIt(event:MouseEvent):void {
this.stopDrag();
*****if (this.hitTestObject(target1_mc)
||this.hitTestObject(target2_mc))***** {
this.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp);
this.removeEventListener(MouseEvent.MOUSE_UP, dropIt);
this.buttonMode = false;
this.x = myTarget.x;
this.y = myTarget.y;
counter++;
} else {
//reply_txt.text = "Try Again!";
this.x = startX;
this.y = startY;
}
}
}
}
答
你需要去发布设置 - >快速柱>设置(按钮),选择“自动声明舞台实例“。这应该够了吧。
编辑
试试这个你recieptMovieClip类中:
MovieClip(root).target1_mc
MovieClip(root).target2_mc
因为这是恼人的类型,你可以存储影片剪辑(根)中的变量。请注意,除非您的movieClip位于显示列表中,否则root属性不存在。所以直到你的类被添加了addChild(),这是行不通的。
另一种方法是使用文档类并将对主时间轴的引用存储在静态变量中。我曾经写过一篇博文。 Have a look
如果您在博客帖子使用该技术,你可以从任何地方访问主时间轴这样的:
Main.display.target1_mc
希望有所帮助。如果您需要,我可以上传一个或两个示例。
它被选中,但我仍然有同样的问题 – Hatem 2010-12-18 09:32:15
错误出现说:“访问未定义的属性target1_mc” – Hatem 2010-12-18 09:34:53
你确定你给了movieClip实例名称target1_mc?也许你应该把文件上传到某个地方,以便我们看看。 – Zevan 2010-12-18 16:13:16