2011-06-06 43 views
0

我在设置精灵的子索引时遇到了问题......它在程序的第一次运行中完美运行,但第二次运行失败。对于上下文来说,这个函数在一个接受一组精灵并显示它们的类中。我的问题是与setChildIndex(_selected as DisplayObject, numChildren-1);提供的DisplayObject必须是调用者的孩子?

private function enlarge(e:MouseEvent):void 
    { 
     if (!_open) 
     { 
      _selected = e.currentTarget; 
      _selectedOrigX = _selected.x; 
      _selectedOrigY = _selected.y; 
      _selectedID = _selected.id; 

      _open = true; 

      setChildIndex(_selected as DisplayObject, numChildren-1); 

      new TweenLite(_selected, 0.5, {width:984, height:640, x:0, y:0, ease:Bounce.easeOut}); 

      _yes = new Yes_btn(); 
      addChild(_yes); 

      _no = new No_btn(); 
      addChild(_no); 

      _yes.addEventListener(MouseEvent.CLICK, selected); 
      _no.addEventListener(MouseEvent.CLICK, cancel); 
     } 
    } 
+0

你得到了什么错误? – 2011-06-06 16:00:01

+0

您是否正在设置“_selected”对象的mouseChildren属性? – Corey 2011-06-06 16:02:33

+0

ArgumentError:错误#2025:提供的DisplayObject必须是调用者的孩子 – davivid 2011-06-06 16:04:12

回答

0

的问题是,我已经忘了从对象删除以前的事件监听器。使用下面的代码,一切都可以正常工作。

addEventListener(Event.REMOVED_FROM_STAGE, removed);

private function removed(e:Event):void 
    { 
     for (var i:uint; i < _objectsArray.length; i ++) 
     { 
      var object:Sprite = _objectsArray[i]; 

      object.removeEventListener(MouseEvent.CLICK, enlarge); 

     } 
    } 
相关问题