1

フラッシュを使い始めたばかりなので、これは簡単なことかもしれませんので、しばらくお待ちください。

私は地図を持っていて、地図上の場所をクリックすると情報が表示されるというプロジェクトを行っています。すべての button_btn をすべての info_mc にリンクすることはできましたが、それには永遠に時間がかかるため、ボタン名を読み取って info_mc 自体にリダイレクトする関数を作成しようとしました。ただし、name_mc から name_info に変更すると名前が文字列に変換されるため、リダイレクトされません。これがコードです。

    winterfell_info.visible = false;

    map.winterfell_btn.doubleclickEnabled = true;
    map.winterfell_btn.mouseChildren = doubleClickEnabled;
    map.winterfell_btn.addEventListener(MouseEvent.DOUBLE_CLICK, show_clicked);

    function show_clicked(e:MouseEvent):void{
         var get_name = e.currentTarget.name;
         var open_info_string = get_name.slice(0,-3) + "info";
         //I've tried some things here but nothing is working for me. 
         var open_info = stage.getChildByName(open_info_string);
         open_info.visible = true;      
    }

どんな助けでも大歓迎です、ありがとう。

はい、はい、ゲーム・オブ・スローンズのマップです。

4

2 に答える 2

0

私は似たようなことをしました..コードを適応させる時間はありませんが、ここで私がしたことを見れば、それがあなたを助けると信じています. ビデオ プレーヤーのオブジェクトのインスタンス名を含む配列を作成してから、switch case ステートメントを使用して適切なイベント リスナーを追加する関数を作成しました。私の意見では、これをまとめて行う最も簡単な方法です。

var buttons:Array = [clicky,pauseBtn,playBtn];

for (var i in buttons)
{
    buttons[i].buttonMode = buttons[i].useHandCursor = true;
    addEventListner(buttons[i]);
}

function addEventListner(movieClip)
{
    movieClip.addEventListener(MouseEvent.CLICK, function(e){
    e.stopPropagation();
    switch (movieClip.name)
    {
    case "playBtn" :
    youTubeHolder.videoPlayer.playVideo();
    videoController.playBtn.visible = false;
    videoController.pauseBtn.visible = true;
    break;

    case "pauseBtn" :
    youTubeHolder.videoPlayer.pauseVideo();
    videoController.playBtn.visible = true;
    videoController.pauseBtn.visible = false;
    break;

    case "stopBtn" :
    youTubeHolder.videoPlayer.seekTo(0);
    youTubeHolder.videoPlayer.stopVideo();

    break;

    default :
    trace(movieClip.name+"is not a valid button");
    }


    });
}
于 2012-09-13T15:26:11.363 に答える
0

Actionscript では大文字と小文字が区別されるため、最初の措置として「open_info_string」を囲む引用符を削除し、その文字列の大文字の S を通常の「s」に変更します。

var open_info = stage.getChildByName(open_info_string);

次に、すぐに機能しない場合はtrace(open_info_string);、ムービー クリップに到達する前に a を挿入して、正しくトリミングされているかどうかを調べます。

于 2012-09-13T14:48:41.867 に答える