2

AS3の「ドラッグアンドドロップ」ゲームをcaptivate6のスライドに配置しようとしています。スタンドアロンのswfは正常に機能しますが、captivateのスライドにインポートして公開するとすぐに、captivateはすべてのコンテンツを再ラップします。別のswfに変換すると、インポートされたゲームパッケージが失われます。

フラッシュのメインタイムラインで私はアクションを持っています

import com.test.games.*;

var dragArray:Array = [comment1, comment2, comment3, comment4, comment5, comment6, comment7, comment8 ];
var matchArray:Array = [leftMatch, leftMatch, rightMatch, rightMatch, rightMatch, leftMatch, rightMatch, leftMatch ];
var posArray:Array = [ {x:154, y:362}, {x:154, y:316}, {x:641, y:362}, {x:641, y:316}, {x:641, y:270}, {x:154, y:270}, {x:641, y:224}, {x:154, y:224} ];

var dragGame:DragGame = new DragGame(stage, dragArray, matchArray, posArray);

dragGame.addEventListener(DragGame.MATCH_MADE, onMatch);
dragGame.addEventListener(DragGame.NO_MATCH, onFlub);
dragGame.addEventListener(DragGame.ALL_DONE, onDone);

function onMatch(event:Event):void {
    var matchSound:Sound = new MatchSound();
    matchSound.play();
}
function onFlub(event:Event):void {
    var flubSound:Sound = new FlubSound();
    flubSound.play();
}
function onDone(event:Event):void {
    var applause:Sound = new Applause();
    applause.play();
}

しかし、私は問題を引き起こしているのは、

import com.test.games.*;

それが理にかなっているなら、captivateのswfで再ラップされたときに失われていますか?

ルートまたはそれが機能するために何かをターゲットにする必要がありますか、それともメインタイムラインですべてのファイルのパッケージをネストする方法がありますか?

(ゲームは私が見つけた景品です-ですから、言語としてのAS3にはあまり自信がありません。優しくしてください)

4

1 に答える 1

1

stageこれをCaptivateにインポートすると、値がnullになる可能性があるためだと思います。これで上書きします:

var dragGame:DragGame; // uninitialized!
if (stage) init() else addEventListener(Event.ADDED_TO_STAGE,init);
function init(e:Event=null):void {
    removeEventListener(Event.ADDED_TO_STAGE,init);
    // here we have stage available, let's make a game
    dragGame = new DragGame(stage, dragArray, matchArray, posArray); 
    dragGame.addEventListener(DragGame.MATCH_MADE, onMatch);
    dragGame.addEventListener(DragGame.NO_MATCH, onFlub);
    dragGame.addEventListener(DragGame.ALL_DONE, onDone);
}
于 2013-03-27T10:12:48.590 に答える