在不同的框架中初始化代码(在动作脚本文件中)
Posted
技术标签:
【中文标题】在不同的框架中初始化代码(在动作脚本文件中)【英文标题】:Initialize the code (in a actionscript file) in a different frame 【发布时间】:2018-05-11 08:59:28 【问题描述】:如何使用函数 init 在不同的框架中初始化这个游戏?我正在使用 Actionscript 3.0。
希望你能帮助我。 下面是代码(代码在 actionscript 文件中):
package
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.Event; //used for ENTER_FRAME event
public class Main extends MovieClip
//constants
const gravity:Number = 1.5; //gravity of the game
const dist_btw_obstacles:Number = 300; //distance between two obstacles
const ob_speed:Number = 8; //speed of the obstacle
const jump_force:Number = 15; //force with which it jumps
//variables
var player:Player = new Player();
var lastob:Obstacle = new Obstacle(); //varible to store the last obstacle in the obstacle array
var obstacles:Array = new Array(); //an array to store all the obstacles
var yspeed:Number = 0; //A variable representing the vertical speed of the bird
var score:Number = 0; //A variable representing the score
public function Main()
init();
function init():void
//initialize all the variables
player = new Player();
lastob = new Obstacle();
obstacles = new Array();
yspeed = 0;
score = 0;
//add player to center of the stage the stage
player.x = stage.stageWidth/2;
player.y = stage.stageHeight/2;
addChild(player);
【问题讨论】:
不要在类构造函数中调用init(),在你想要的那个框架中调用init()。 那很简单。请记住,混合类脚本和多帧时间线是一个坏主意,并且会引发各种问题。 一位朋友也告诉我,它有效 :D !非常感谢您回复我 【参考方案1】:如果有框架(对于 Adobe Animate 项目),请使用addFrameScript
:
someMC.addFrameScript(2, myFunction);
private function myFunction():void
this.stop();
如果框架 2
存在,myFunction
工作。
如果没有,您可以使用 Tween 框架,例如 TweenLite or TweenMax(推荐):
TweenLite.to(mc, 1.5, onComplete:myFunction);
function myFunction():void
trace("tween finished");
myFunction
在 1.5 秒后运行
【讨论】:
您不需要使用 TweenLite 之类的繁重库来实现简单的超时。此功能内置:flash.utils.setTimeout(myFunction, 1500);
另外,addFrameScript 是基于 0 的,所以您的 myFunction
实际上会在第 3 帧上
听起来不错,但 Organis 说的方式更简单。无论如何,谢谢你回复我,我以为这是一个废弃的网页:p。以上是关于在不同的框架中初始化代码(在动作脚本文件中)的主要内容,如果未能解决你的问题,请参考以下文章