2011-01-30 268 views
1

我想展示我的圖片庫的第一個圖像加載時。 我將如何去模擬一個將事件值傳遞給函數的鼠標單擊事件?如何模擬鼠標點擊事件

這裏是我的代碼:

private function createThumbContainer(my_X:Number, my_Y:Number):void{ 
    ThumbsContainerMC = new MovieClip(); 
    ThumbsContainerMC.buttonMode = true; 
    ThumbsContainerMC.x = my_X; 
    ThumbsContainerMC.y = my_Y; 
    addChild(ThumbsContainerMC); 

    // Here I am trying to enter displayImg() with the value of 0 in my evt.target.name 
    //ThumbsContainerMC.getChildByName("name").dispatchEvent(new Event(MouseEvent.CLICK)); 

    ThumbsContainerMC.addEventListener(MouseEvent.CLICK, displayImg); 
} 

private function displayImg(evt:MouseEvent):void { 

    var imgURL = imgList[Number(evt.target.name)]; 
    imgTitle.text = [email protected]; 

    if (evt.target.name != activeImg) { 
     imgLoader.load(new URLRequest(imgURL)); 
    } 
    activeImg = evt.target.name; 
} 

回答

2
如果您修改這樣的代碼

private function displayImg(evt:MouseEvent = null):void { 
    var name: String = evt ? evt.target.name : '0'; 
    var imgURL = imgList[Number(name)]; 
    imgTitle.text = [email protected]; 

    if (name != activeImg) { 
     imgLoader.load(new URLRequest(imgURL)); 
    } 
    activeImg = name; 
} 

你剛纔打電話displayImg();給init你嘎llery

3

你當然可以手動分派MouseEvent.CLICK圖片:

myContainer.dispatchEvent (new MouseEvent(MouseEvent.CLICK)); 

要小心,不過,用戶事件的自動化常常導致故障程序:如果用戶點擊了其他位置第一,也許你想擁有連接其他聽衆什麼,等

我覺得更有用不同的功能:事件公頃ndler應該只包含處理事件,displayImg將成爲一個單獨的方法。

private function onThumbClick (ev:MouseEvent) : void { 
    var name:String = evt.target.name; 
    displayImg (name); 
} 

private function displayImg (name:String) : void { 
    var imgURL = imgList[parseInt (name)]; 
    imgTitle.text = [email protected]; 

    if (name != activeImg) { 
     imgLoader.load(new URLRequest(imgURL)); 
    } 
    activeImg = name; 
} 

你可以調用displayImg ("1");代替調度的事件。

4

你不是真的有。只需將displayImg代碼移動到帶有字符串參數的函數即可。現在它可以在沒有鼠標事件的情況下被調用。喜歡的東西:

private function createThumbContainer(my_X:Number, my_Y:Number):void{ 
    ThumbsContainerMC = new MovieClip(); 
    ThumbsContainerMC.buttonMode = true; 
    ThumbsContainerMC.x = my_X; 
    ThumbsContainerMC.y = my_Y; 
    addChild(ThumbsContainerMC); 

    // Here I am trying to enter displayImg() with the value of 0 in my evt.target.name  
    loadImg("0"); 

    ThumbsContainerMC.addEventListener(MouseEvent.CLICK, displayImg); 
} 

private function Img_Clicked(evt:MouseEvent):void { 

    loadImg(evt.target.name); 

} 


private function loadImg(String targetName) { 

    var imgURL = imgList[Number(targetName)]; 
    imgTitle.text = [email protected]; 

    if (targetName != activeImg) { 
     imgLoader.load(new URLRequest(imgURL)); 
    } 
    activeImg = targetName; 

} 
4

這也是常見的做法,使事件對象參數可選,並實現默認行爲,像這樣(注意:int將在這裏使用更好的號碼類型爲你所訪問數組索引) :

private function createThumbContainer(my_X:Number, my_Y:Number):void{ 
    ThumbsContainerMC = new MovieClip(); 
    ThumbsContainerMC.buttonMode = true; 
    ThumbsContainerMC.x = my_X; 
    ThumbsContainerMC.y = my_Y; 
    addChild(ThumbsContainerMC); 

    // Here I am trying to enter displayImg() with the value of 0 in my evt.target.name 
    //ThumbsContainerMC.getChildByName("name").dispatchEvent(new Event(MouseEvent.CLICK)); 

    displayImg(); 
    ThumbsContainerMC.addEventListener(MouseEvent.CLICK, displayImg); 
} 

private function displayImg(evt:MouseEvent = null):void { 

    var imgIndex:int = evt ? int(evt.target.name) : 0; 

    var imgURL = imgList[imgIndex]; 
    imgTitle.text = [email protected]; 

    if (imgIndex != activeImg) { 
     imgLoader.load(new URLRequest(imgURL)); 
    } 
    activeImg = imgIndex; 
} 
+0

是的,這工作非常感謝堆 – dinogy 2011-01-30 16:40:54

+0

時EVT爲空的意志鑄造evt.target.name等於0?我對此表示懷疑。 – loxxy 2011-01-30 16:51:35