对,我已经到处寻找这个问题的答案,但似乎没有人有和我一样的问题。我创建了3个类都是影片剪辑。其中2个就像按钮一样,所以当按下时,我希望第三个影片剪辑移动到左边或右边,但它提出了错误1119:通过静态类型Class的引用访问可能未定义的属性x。这3个类都链接在fla文件中,所以不知道为什么不像输入类名来访问它那么简单。下面是代码:
第一类(我想用鼠标按下移动):
package code
{
import flash.display.MovieClip;
public class Walking extends MovieClip
{
public function Walking()
{
x = 600;
y = 350;
gotoAndStop(1);
}
}
}
第二个类:
package code
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Left extends MovieClip
{
public function Left()
{
addEventListener(MouseEvent.MOUSE_DOWN, moveleft);
}
protected function moveleft(event:MouseEvent):void
{
Walking.x += -10;
}
}
}
第三类:(尚未编码)
package code
{
import flash.display.MovieClip;
public class Right extends MovieClip
{
public function Right()
{
}
}
}
我建议你将游戏逻辑保持在单一类中,然后引用按钮。在这种情况下,您甚至不需要为按钮创建类。像这样…
//Game.as
var arrowLeft : MovieClip;
var arrowRight : MovieClip;
var walker : MovieClip;
function Game()
{
arrowLeft.addEventListener(MouseEvent.CLICK, OnClickLeft);
arrowRight.addEventListener(MouseEvent.CLICK, OnClickRight);
}
function OnClickLeft(pEvent : MouseEvent) : void
{
Walk(-speed);
}
function OnClickRight(pEvent : MouseEvent) : void
{
Walk(speed);
}
function Walk(pSpeed : Number) : void
{
walker.x += pSpeed;
}
谢谢你们的帮助,我重新阅读了一些关于类的内容,结果发现我忘记了文档类。我需要做的是使用文档类将影片剪辑导入舞台(从而创建它们的实例,又名实例化),然后我能够访问x和y属性。我对一个类是什么感到困惑,它只是文档类和fla之外的代码,链接到像电影剪辑这样的对象,并通过对象的所有实例分别运行到文档类。无论如何,这是我现在所拥有的,工作正常:)
文档类:
package {
import flash.display.MovieClip;
import code.Walking;
import code.Left;
import code.Right;
import flash.events.MouseEvent;
public class gameWalk extends MovieClip {
public var walker:Walking;
public var left:Left;
public var right:Right;
public function gameWalk()
{
walker = new Walking();
left = new Left();
right = new Right();
addChild(walker);
addChild(left);
addChild(right);
walker.x = 640;
walker.y = 360;
left.x = 65;
left.y = 660;
right.x = 1200;
right.y = 660;
createListeners()
}
public function createListeners():void
{
left.addEventListener(MouseEvent.CLICK, moveLeft);
right.addEventListener(MouseEvent.CLICK, moveRight);
}
public function moveLeft(event:MouseEvent):void
{
walker.x += -10;
}
public function moveRight(event:MouseEvent):void
{
walker.x += 10;
}
}
}
走:
package code
{
import flash.display.MovieClip;
public class Walking extends MovieClip
{
public function Walking()
{
gotoAndStop(1);
}
}
}
左:package code
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Left extends MovieClip
{
public function Left()
{
}
}
}
:
package code
{
import flash.display.MovieClip;
public class Right extends MovieClip
{
public function Right()
{
}
}
}