如何在doc class AS3的舞台上定位影片剪辑?

时间:2010-12-17 22:37:40

标签: actionscript-3 class movieclip flash-ide

我正在制作动态拖放游戏。 我有一个包含拖放代码的拖动项目的类。

我的问题是我无法在我的热门测试声明中调用/访问我已经放在舞台上的电影剪辑。

这是我的代码和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;
   }

  }
 }
}

1 个答案:

答案 0 :(得分:1)

您需要发布设置 - > flash->设置(按钮)并选择“自动声明舞台实例”。这应该可以解决问题。

修改

在recieptMovieClip类中尝试:

MovieClip(root).target1_mc
MovieClip(root).target2_mc

因为这对于类型来说很烦人,所以可以将MovieClip(root)存储在变量中。请注意,除非您的movieClip位于显示列表中,否则root属性不存在。所以在你的课程添加了addChild()之后,这将无效。

另一种方法是使用文档类并在静态变量中存储对主时间轴的引用。我曾写过一篇关于这篇文章的博文。 Have a look

如果您在该博文中使用该技术,您可以从以下任何地方访问主时间轴:

Main.display.target1_mc

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