2010-07-07 24 views
2

我正在研究一個組件,我需要在tilelist中的moviclip內的按鈕上註冊點擊事件,是否有人可以將我指向正確的方向。將事件添加到as3中tilelist中的movieclip

Tilelist - > movieclip - > button(我需要在按鈕上註冊點擊事件)。

+0

我認爲你需要這個事件進入父應用程序,只是它的渲染器?太 - 你想模擬點擊瓷磚還是這更定製? – 2010-07-07 18:23:12

回答

0

從任何DisplayObject模擬鼠標點擊事件,你可以做這樣的事情:

targetMC.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 
2

如果我理解正確的話,似乎所有你想要的是一個句柄到你的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'); 
+0

感謝您的回答,我可以爲電影剪輯註冊一個點擊事件,我需要的是,在影片剪輯中有一個孩子(按鈕),我需要在按鈕上註冊點擊。 – pmarreddy 2010-07-10 11:06:06

+0

如果您可以控制影片剪輯,那麼編輯它以便您需要的項目具有實例名稱。然後,您可以像* myClip.myButton.addEventListener(MouseEvent.CLICK,onClick)*一樣輕鬆地引用它。如果您無法控制剪輯,則可以使用它的兒童列表來訪問該按鈕,如* myClip.getChildAt(0)*中所示。你可以玩弄,並找出哪個孩子是你的按鈕。我會在我的回覆中寫一些示例代碼。 – gMale 2010-07-10 14:40:49

相關問題