2

我正在尝试将 AS3“拖放”游戏放到 captivate 6 中的幻灯片上。独立的 swf 工作正常,但是一旦将其导入到 captivate 中的幻灯片上并发布它,captivate 就会重新包装其所有内容进入另一个 swf 从而丢失了导入的游戏包。

在 Flash 的主时间线上,我有动作

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();
}

但我认为导致问题的原因是 4 个包文件来自

import com.test.games.*;

重新包装在 captivate 的 swf 中时会丢失,如果这有意义吗?

我是否需要以root或其他东西为目标才能工作,或者是否有一种方法可以将所有文件的包与主时间线一起嵌套。

(该游戏是我发现的免费赠品 - 所以我对 AS3 作为一种语言不是很有信心,请温柔)

4

1 回答 1

1

我希望这是因为stage当您将其导入 Captivate 时该值可能为空。用这个覆盖:

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 回答