编辑:是的,我知道输入所有这些代码有点难过(特别是因为有些人甚至不会感激地表示感谢)但我认为这个问题很重要,足以证明代码的合理性,因为它可能对其他人有帮助未来也。
你好,
你很亲密。在你的游戏文件中,你可以放一个var _setgameSpeed
然后从 Intro 你可以调整它。flashgame._setgameSpeed = gameSpeed;
它有点复杂,因为你还必须首先设置对 flashgame 的引用。让我解释...
理想情况下,您希望将所有代码放在一个地方(最好是 .as 文件,但是......)如果您更愿意使用时间线,那么您应该创建一个名为“actions”的新空层并将所有代码放在第一个那个框架。
还将您的按钮更改为movieClip 类型并删除其中的所有代码,因为所有内容都将由“动作”层中的代码控制。在示例中,我在舞台上有那个movieclip,实例名称为“btn_load_SWF”
Intro.swf(父 SWF 文件)
var my_Game_Swf:MovieClip; //reference name when accessing "flashgame.swf"
var _SWF_is_loaded:Boolean = false; //initial value
var set_gameSpeed:int; //temp value holder for speed
var swf_loader:Loader = new Loader();
btn_load_SWF.buttonMode = true; //instance name of movieclip used as "load" button
btn_load_SWF.addEventListener(MouseEvent.CLICK, load_Game_SWF);
function load_Game_SWF (event:MouseEvent) : void
{
//set_gameSpeed = 10 * numericStepper.value;
set_gameSpeed = 100; //manual set cos I dont have the above numericStepper
if ( _SWF_is_loaded == true)
{
stage.removeChild(swf_loader);
swf_loader.load ( new URLRequest ("flashgame.swf") );
}
else
{ swf_loader.load ( new URLRequest ("flashgame.swf") ); }
swf_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, Game_SWF_ready);
}
function Game_SWF_ready (evt:Event) : void
{
swf_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, Game_SWF_ready);
//Treat the Loader contents (flashgame.swf) as a MovieClip named "my_Game_Swf"
my_Game_Swf = swf_loader.content as MovieClip;
my_Game_Swf.gameSpeed = set_gameSpeed; //update gameSpeed variable in flashgame.swf
//also adjust SWF placement (.x and .y positions etc) here if necessary
stage.addChild(my_Game_Swf);
_SWF_is_loaded = true;
}
现在在你的 flashgame 文件中确保还有一个动作层并在下面输入这样的代码,然后在调试 Intro/Parent 文件之前先编译它。当您的 Intro 加载 flashgame.swf 时,它应该加载一个已经编译了以下代码的 swf。
快闪游戏.swf
var gameSpeed:int;
gameSpeed = 0; //initial value & will be changed by parent
addEventListener(Event.ADDED_TO_STAGE, onAdded_toStage);
function onAdded_toStage (e:Event):void
{
trace("trace gameSpeed is.." + String(gameSpeed)); //confirm speed in Debugger
//*** Example usage ***
var my_shape:Shape = new Shape();
my_shape.graphics.lineStyle(5, 0xFF0000, 5);
my_shape.graphics.moveTo(10, 50);
my_shape.graphics.lineTo(gameSpeed * 10, 50); //this line length is affected by gameSpeed as set in parent SWF
addChild(my_shape);
}
intro.swf 中的关键行如下:my_Game_Swf.gameSpeed = set_gameSpeed;
因为它使用从父 SWF 中的变量获取的数量更新 flashgame.swf 中的变量(称为 my_Game_Swf)。
这只是您可以访问两个单独的 SWF 文件之间的信息的一种方式。希望它有所帮助。