好的,我的 Flash CS5.5 程序遇到了一个奇怪的问题。我有一个主 swf,它加载另一个 swf 作为一种迷你游戏交易,然后在 swf 完成后继续。问题出在我的外部迷你游戏 swf 上。在 SWF 中,当您猜对第一个问题后,您将进入带有输入/输出图表的屏幕,并且有 2 个文本字段,玩家必须正确填写才能赢得积分并继续。这就是我遇到奇怪问题的地方。
每当我从主 SWF 运行 SWF 时,它会立即从填写正确答案的字段开始,如果您点击答案按钮,它每次都会告诉您它是不正确的,因此无法通过它。但是,如果我通过双击打开它在 SWF 之外自行运行游戏,它运行得很好并且问题不存在。有谁知道为什么会发生这种情况?谢谢大家。
编辑:我之前应该提到我的主要 SWF 是在 Adobe Flash Professional CS5.5 中构建的,而有问题的外部 SWF 是 FlashDevelop 4 项目。
下面是加载外部小游戏 swf 的代码:
toolLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, updateCurrentProgress);
toolLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onToolLoaderComplete);
function updateCurrentProgress(evt:ProgressEvent):void {
var currentLoaded:Number = evt.bytesLoaded/evt.bytesTotal;
currentLoaded = Math.round(currentLoaded*100);
// update the preloader bar
progressBarLoad.graphics.beginGradientFill(GradientType.LINEAR, [0xaaaaff, 0x000088], [1, 1], [0, 255], gradientMatrix, SpreadMethod.PAD);
progressBarLoad.graphics.drawRect(1, stage.stageHeight-49, int(currentLoaded*8)-1, 48);
// update the preloader text
progPercentText.text = "Loading... "+currentLoaded+"%";
}
function onToolLoaderComplete(evt:Event):void {
addChild(toolLoader);
addEventListener(Event.COMPLETE, gotoQuestions);
}
以及来自外部 swf 的用于填充表单字段的游戏代码(我没有编写此函数的代码):
private function populateRule(rule:Function, startPoint:Number, increment:Number):Array{
trace("populateRule");
var temp:Array = new Array();
temp.push(new Array());
temp.push(new Array());
for( var i:int = 0; i<5; i++){
temp[0].push(Number(startPoint + (increment * i)));
temp[1].push(rule(startPoint + (increment * i)));
trace(ruleWindow.ruleTable[("in" + Number(i + 1).toString())].text);
trace(ruleWindow.ruleTable[("out" + Number(i + 1).toString())].text);
ruleWindow.ruleTable[("in" + Number(i + 1).toString())].text = temp[0][i].toString();
ruleWindow.ruleTable[("out" + Number(i + 1).toString())].text = temp[1][i].toString();
}
return temp;
}