我正在研究一個組件,我需要在tilelist中的moviclip內的按鈕上註冊點擊事件,是否有人可以將我指向正確的方向。將事件添加到as3中tilelist中的movieclip
Tilelist - > movieclip - > button(我需要在按鈕上註冊點擊事件)。
我正在研究一個組件,我需要在tilelist中的moviclip內的按鈕上註冊點擊事件,是否有人可以將我指向正確的方向。將事件添加到as3中tilelist中的movieclip
Tilelist - > movieclip - > button(我需要在按鈕上註冊點擊事件)。
從任何DisplayObject模擬鼠標點擊事件,你可以做這樣的事情:
targetMC.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
如果我理解正確的話,似乎所有你想要的是一個句柄到你的TileList內,並從那裏的movieclip ,你想添加一個事件監聽器。
有很多方法可以獲取tileList中movieClip的句柄。首先,我想說你應該使用dataProvider along the lines of the example here。這將作爲您的顯示對象的模型。從那裏,你可以從列表中訪問您所需的影片剪輯,如:
import fl.controls.TileList;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem(moviClip1);
dp.addItem(moviClip2);
dp.addItem(moviClip3);
dp.addItem(moviClip4);
var myTileList:TileList = new TileList();
myTileList.dataProvider = dp;
addChild(myTileList);
...
//sometime later in the code
//this adds a listener to movieClip3
dp.getItemAt(3).addEventListener(MouseEvent.CLICK, onClick);
...
//or
for (var mc in dp.toArray()) {
(mc as DisplayObject).addEventListener(MouseEvent.CLICK, onClick);
}
另一種方法(如果你不能與數據提供商合作)將嘗試用以下你的運氣TileList方法:
getChildAt(index:int):DisplayObject
getChildByName(name:String):DisplayObject
getChildIndex(child:DisplayObject):int
getItemAt(index:uint):Object
並查看您是否可以訪問所需的剪輯。如果是我,我會通過做這樣的測試:
var mc:MovieClip = myTileList.getChildAt(1) as MovieClip;
if(mc != null) mc.addEventListener(MouseEvent.CLICK, doSomethingWhenClicked);
public void function doSomethingWhenClicked(event:MouseEvent):void {
Alert.show('click!', 'click');
}
然後,我會不斷嘗試不同的東西在第1行,直到警報彈出。
我希望以某種方式幫助,
--gMale
編輯:在回答您下面的評論,這裏是一個簡單的例子掉我對你的頭頂會玩弄你的剪輯和找到按鈕(它可能不會編譯,但你應該明白了)。使用這個唯一的,如果你不具備編輯剪輯,如果它的按鈕實際上是一個fl.controls.Button(而不是一個影片剪輯按鈕)的能力:
import fl.controls.Button;
var buttonsFound:Integer = 0;
//assume mytiledClip points to your clip that has the button on it
for(var i=0; i < myTiledClip.numChildren; i++) {
var button:Button = myTiledClip.getChildAt(i) as Button;
if(button != null){
Alert.show('Button Found at index:' + i, 'Button Found');
buttonsFound++;
}
}
Alert.show('Number of buttons found: ' + buttonsFound, 'Search Complete');
感謝您的回答,我可以爲電影剪輯註冊一個點擊事件,我需要的是,在影片剪輯中有一個孩子(按鈕),我需要在按鈕上註冊點擊。 – pmarreddy 2010-07-10 11:06:06
如果您可以控制影片剪輯,那麼編輯它以便您需要的項目具有實例名稱。然後,您可以像* myClip.myButton.addEventListener(MouseEvent.CLICK,onClick)*一樣輕鬆地引用它。如果您無法控制剪輯,則可以使用它的兒童列表來訪問該按鈕,如* myClip.getChildAt(0)*中所示。你可以玩弄,並找出哪個孩子是你的按鈕。我會在我的回覆中寫一些示例代碼。 – gMale 2010-07-10 14:40:49
我認爲你需要這個事件進入父應用程序,只是它的渲染器?太 - 你想模擬點擊瓷磚還是這更定製? – 2010-07-07 18:23:12