如何从 doc 类 AS3 定位舞台上的影片剪辑?

Posted

技术标签:

【中文标题】如何从 doc 类 AS3 定位舞台上的影片剪辑?【英文标题】:How to target movie clip on the stage from doc class AS3? 【发布时间】:2011-05-27 09:32:44 【问题描述】:

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

我的问题是我无法调用/访问我在命中测试语句中已经放在舞台上的电影剪辑。

这是我的代码,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】:

你需要去publish settings->flash->settings(button)并选择“Automatically declare stage instances”。这应该可以解决问题。

编辑

在你的 recieptMovieClip 类中试试这个:

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

因为这很烦人,所以您可以将 MovieClip(root) 存储在一个变量中。请务必注意,除非您的 movieClip 在显示列表中,否则 root 属性不存在。因此,在使用 addChild() 添加您的课程之前,这是行不通的。

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

如果您使用该博文中的技术,您可以像这样从任何地方访问主时间线:

Main.display.target1_mc

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

【讨论】:

它被选中但我仍然有同样的问题 出现错误说“访问未定义的属性target1_mc” 您确定为movieClip 指定了实例名称target1_mc 吗?也许您应该将文件上传到某个地方,以便我们查看。 是的,我确定他们有这些名字,但这不是 doc 类,对不起,我误解了,它是一个自定义类。这有什么不同吗???

以上是关于如何从 doc 类 AS3 定位舞台上的影片剪辑?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 as3 同时访问所有影片剪辑(以及影片剪辑中的影片剪辑......)?

AS3:如何从影片剪辑内部检查和重置主时间轴上的变量

AS3 使用 ENTER_FRAME 对动态创建的影片剪辑进行动画处理

删除所有数组影片剪辑上的子项

AS3:生成多个影片剪辑(随机位置)?

AS3 - 将影片剪辑放置在指定坐标