cab*_*ret 2 apache-flex flexbuilder actionscript mxml flex4.5
我在Flex 4中有以下功能:
protected function initEventHandlers():void
{
imageContainer.addEventListener(DragEvent.DRAG_ENTER, acceptDrag);
imageContainer.addEventListener(DragEvent.DRAG_DROP, handleDrop);
img_1.addEventListener(MouseEvent.MOUSE_DOWN, handleDrag);
img_2.addEventListener(MouseEvent.MOUSE_DOWN, handleDrag);
img_3.addEventListener(MouseEvent.MOUSE_DOWN, handleDrag);
img_4.addEventListener(MouseEvent.MOUSE_DOWN, handleDrag);
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个代码的外观.这四个图像在我的应用程序中声明如下:
<s:HGroup y="10" width="650" horizontalAlign="center" horizontalCenter="6">
<s:Image width="80" height="80" source="images/1.jpg" id="img_1" />
<s:Image width="80" height="80" source="images/2.jpg" id="img_2" />
<s:Image width="80" height="80" source="images/3.jpeg" id="img_3" />
<s:Image width="80" height="80" source="images/4.jpg" id="img_4" />
</s:HGroup>
Run Code Online (Sandbox Code Playgroud)
是不是有办法循环hgroup中的每个图像并添加事件处理程序?
像这样的东西:
for(image in hgroup) {
image.addEventlistener(MouseEvent.MOUSE_DOWN, handleDrag);
Run Code Online (Sandbox Code Playgroud)
}
我的老师告诉我这是不可能的,但是对于10多张图片,我无法想象为每张图片分别做这件事.必须有更好的方法来做到这一点,不是吗?
提前致谢!
你的老师错了!
给HGroup一个id(例如imageGroup).
然后这样做:
var numElements:int = imageGroup.numElements;
for (var i:int = 0; i<numElements; i++) {
var image:Image= imageGroup.getElementAt(i) as Image;
if (image) image.addEventlistener(MouseEvent.MOUSE_DOWN, handleDrag);
}
Run Code Online (Sandbox Code Playgroud)