0

私はactionscript3でビデオプレーヤーを作成していますが、これはまったく新しいものです。とにかく、私が今やろうとしているのは、アプリケーションで最初のサムネイルを自動クリックすることです。

これが私のアプリケーションからのいくつかのコードです:

function createThumbs():void{
    var i:Number = 0;
    //For loop that iterates through all of the videos in an XML file that has a list of videos in it
    for each (var videoEntry:XML in videosList) {
        i++;
        var thumbnail:MovieClip = new thumb_mc;
        thumbnail.name = "thumb"+i;
        thumbnail.addEventListener(MouseEvent.MOUSE_UP,thumb_click);
        thumbs_container.addChild(thumbnail);

        //Now attempting to simulate a click if it's the first thumbnail
        if(i == 1){
            thumbnail.dispatchEvent( new MouseEvent( MouseEvent.MOUSE_UP ) );
        }
    }

}

私はそれをグーグルで検索しようとしていて、サムネイルが実際にステージに追加されていることを知るためにイベントリスナーを追加し、それをクリックする必要があるかもしれないことがわかりました。

どうすればいいのかわからないので、助けていただければ幸いです。前もって感謝します!

編集:Ascension Systemsの回答によると、ifステートメントを次のように編集しようとしました。

    if(i == 1){
        thumbnail.addEventListener(Event.ADDED_TO_STAGE, function clipAdded(e:Event):void {
        MovieClip(e.currentTarget).dispatchEvent( new MouseEvent( MouseEvent.MOUSE_UP ) );

        });
    }

何かが起こっているかどうか、そしてそれが本当にサムネイルをクリックしているかどうかを確認するためだけにそれを行いましたが、そうではありません。

編集:Ascension Systemsが提供したコードが機能することを知りましたが、最初は別のエラーが発生したため機能しませんでした。つまり、YouTube API、FLVPlaybackなどを使用しています。それらの1つは別のムービークリップにあります。YouTubeムービークリップにこの関数を追加しました。

function destroyPlayer():void {
    player.destroy();
}

しかし、どうやらそれは私が前に気づかなかったこの警告を引き起こしました:TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。FLVTOO_fla :: YT_mc_4 / destroyPlayer()で

スクリプトの最初で、次のようにプレーヤーをオブジェクトとして設定しています。var player:Object;

この警告が表示される理由はありますか?

4

1 に答える 1

1
thumbnail.addEventListener(Event.ADDED_TO_STAGE, function clipAdded(e:Event):void {
    MovieClip(e.currentTarget).dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, ... rest of arguments);

    //Remove the listener when done
    (e.target as EventDispatcher).removeEventListener(e.type, arguments.callee);
});

このコードはテストされていません。dispatchEvent コードは疑似コードであることに注意してください。ここで匿名関数をイベントリスナーにドロップした方法は...ちょっと怠惰で、気に入らない人もいるかもしれませんが、コールバック内にイベントリスナーをクリーンアップするコードがあり、これは実行されるだけの関数であるためです一度、まあ、この目的のためには大丈夫だと思います。これが正確に何であるかの詳細については、この質問と回答を参照してください。

ただし、これで問題が解決するかどうかはわかりません。私が言ったように、これはテストされておらず、オブジェクトが実際にステージ上にある前にイベントをディスパッチすることが問題であるという前提で行われています。これがうまくいくかどうか教えてください。

また、補足として、flash/AS3 を初めて使用する場合は、必ず次の Web サイトが必要です: http://gotoandlearn.com/

于 2012-04-10T14:16:00.180 に答える