如果我在一个名为 Main.as 的文档中创建了变量,如下所示:
var backgroundLayer:Sprite = new Sprite;
var gameLayer:Sprite = new Sprite;
var interfaceLayer:Sprite = new Sprite;
如何在另一个 .as 文件中访问这些内容?我正在尝试将游戏中的对象分类,但出现错误。例如,我有一个 EnemyShip.as 文件,其中包含以下内容:
function enterFrame(e:Event)
{
this.x -= speed;
if(this.x < -100)
{
removeEventListener("enterFrame", enterFrame);
stage.removeChild(this);
}
}
function kill()
{
var explosion = new Explosion();
stage.addChild(explosion);
explosion.x = this.x;
explosion.y = this.y;
removeEventListener("enterFrame", enterFrame);
stage.removeChild(this);
Main.updateScore(1);
shot.play();
}
问题是我试图更改stage.addChild(explosion)
为,gameLayer.addChild(explosion)
但出现access of undefined property gameLayer
错误。
我可能缺少一些明显的东西,所以请告诉我。我也不太确定是否应该使用new Sprite
or new Movieclip
; 我的大部分游戏都是由电影剪辑和按钮组成的,所以也许这应该改变?
谢谢。
编辑:我通过执行以下操作(相关部分)尝试了 Kodiak 的第二个解决方案:
敌舰.as:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.ui.Mouse;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.system.LoaderContext;
import flash.display.Sprite;
import flash.net.Socket;
public class EnemyShip extends MovieClip
{
public static var gameLayer:Sprite;
var speed:Number;
var shot = new ShotSound();
public function EnemyShip()
{
this.x = 800;
this.y = Math.random() * 275 + 75;
speed = Math.random()*5 + 9;
addEventListener("enterFrame", enterFrame);
addEventListener(MouseEvent.MOUSE_DOWN, mouseShoot);
}
主要作为:
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.ui.Mouse;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.system.LoaderContext;
import flash.display.Sprite;
import flash.net.Socket;
public class Main extends MovieClip {
EnemyShip.gameLayer = gameLayer;
var interfaceLayer:Sprite = new Sprite;
var menuLayer:Sprite = new Sprite;
var endGameLayer:Sprite = new Sprite;
我在尝试执行以下操作时遇到错误,例如1120: Access of undefined property gameLayer
:EnemyShip.gameLayer = gameLayer;
crosshair = new crosshair_mc();
gameLayer.addChild(crosshair);
我犯了同样的错误。