如何从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 

希望有所帮助。如果您需要,我可以上传一个或两个示例。

+0

它被选中,但我仍然有同样的问题 – Hatem 2010-12-18 09:32:15

+0

错误出现说:“访问未定义的属性target1_mc” – Hatem 2010-12-18 09:34:53

+0

你确定你给了movieClip实例名称target1_mc?也许你应该把文件上传到某个地方,以便我们看看。 – Zevan 2010-12-18 16:13:16