Stopdrag没有按预期工作

时间:2010-08-23 16:08:37

标签: actionscript-3

我尝试拖动某些内容,并且在stopdrag上,如果满足某些要求,它应该启动一个函数:

if(e.target.dropTarget.parent == targetName || e.target.dropTarget.parent.parent.parent.getChildByName("cloud").getChildByName("itemPlacer").getChildAt(1) == targetName){

当我正确拖动和停止拖动(需求已满)时,这很有效,但如果不满足要求,我会收到一条错误消息,说我引用的地方不能为空。我知道问题出在||部分之后,但我该如何解决这个问题?

是否有更短的方式进行这些检查?目前,我正在经历很多家长并得到孩子们的陈述,并想知道是否还有其他方式。

1 个答案:

答案 0 :(得分:2)

您可以为容器分配变量,然后在条件语句中使用该变量。

编辑:

为了访问getChildByName方法,您的元素应至少作为DisplayObjectContainer进行转换。 MovieClip,Sprite扩展了DisplayObjectContainer,因此您可以使用其中任何一个。在这里我使用MovieClip,但选择是任意的。

var main:MovieClip = e.target.dropTarget.parent ;
var container:MovieClip  = main.parent.parent as MovieClip;

var cloud:MovieClip = container.getChildByName("cloud");
var itemPlacer:MovieClip = cloud.getChildByName("itemPlacer");

var child:MovieClip = container.getChildAt(1);

if( main == targetName || child == targetName )
  //your code here

对于另一个问题,请先检查空值。

  if(main != null && child != null)
  {
      if( main == targetName || child == targetName )
      {
         //your code here
      }

  }else{

        //your code here
  }