Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
Adobe Flex SDK 4.1 (Release)
-
None
-
None
-
Affected OS(s): Mac
Affected OS(s): Mac - All Macs
Browser: Firefox 3.x
Language Found: English
Description
Steps to reproduce:
1. Compile and run test case (I tested on a Mac 10.5) with Beta 1 Flex Builder 4
2. It will throw the runtime error below.
3. I have provided a fix attached as DragManagerImpl.as
Actual Results:
[SWF] Users:kmossman:Documents:DragDropExample:bin-debug:DragDropExample.swf - 1,585,804 bytes after decompression
RangeError: Error #2006: The supplied index is out of bounds.
at flash.display::DisplayObjectContainer/getChildAt()
at mx.core::UIComponent/removeChildAt()[E:\dev\beta1\frameworks\projects\framework\src\mx\core\UIComponent.as:6133]
at mx.managers::DragManagerImpl/endDrag()[E:\dev\beta1\frameworks\projects\framework\src\mx\managers\DragManagerImpl.as:456]
at mx.managers::DragManager$/http://www.adobe.com/2006/flex/mx/internal::endDrag()[E:\dev\beta1\frameworks\projects\framework\src\mx\managers\DragManager.as:366]
at mx.managers.dragClasses::DragProxy/effectEndHandler()[E:\dev\beta1\frameworks\projects\framework\src\mx\managers\dragClasses\DragProxy.as:667]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.effects::Effect/effectEndHandler()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\Effect.as:1804]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.effects::EffectInstance/finishEffect()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\EffectInstance.as:789]
at mx.effects::EffectInstance/finishRepeat()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\EffectInstance.as:833]
at mx.effects.effectClasses::TweenEffectInstance/onTweenEnd()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\effectClasses\TweenEffectInstance.as:435]
at mx.effects.effectClasses::MoveInstance/onTweenEnd()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\effectClasses\MoveInstance.as:458]
at mx.effects::Tween/endTween()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\Tween.as:566]
at mx.effects::Tween/http://www.adobe.com/2006/flex/mx/internal::doInterval()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\Tween.as:607]
at mx.effects::Tween$/timerHandler()[E:\dev\beta1\frameworks\projects\framework\src\mx\effects\Tween.as:191]
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
Expected Results:
No Error.
Workaround (if any):
Within mx.managers.DragManagerImpl.as simply add a check to see if dragProxy has children before we attempt to remove it. Adding this check resolves the issue.
if(dragProxy.numChildren)
{ dragProxy.removeChildAt(0); // The drag image is the only child dragProxy = null; }