2011-01-30 14 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; 
} 

をあなたは自分のGAをinitにdisplayImg();を呼び出す必要がありますlley

+0

ありがとうございました。私はそれを理解することに問題があったが、それは働いた:) – dinogy

+0

@ jtdino - これは助けてくれるはずです:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#conditional – www0z0k

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

+0

evtがnullの場合、evt.target.nameは0と等しいでしょうか?疑わしい。 – loxxy

+0

@loxxy nullをintにキャストすると0が返されますが、この場合は最初にnullのプロパティ(evt.target)にアクセスしてエラーをスローします。 – meyertee

関連する問題