我有以下课程:
package {
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Ship extends Sprite {
private var parentStage:Sprite;
public var ship:Sprite;
[Embed(source = '../lib/ship.swf')] private var swfShip:Class;
public function Ship(parent:Sprite) {
this.parentStage = parent;
ship = new swfShip();
parent.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
parent.addChild(ship);
}
private function keyDown(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.RIGHT:
ship.x += 10;
break;
default:
break;
}
}
}
}
但是要从这个类外部访问sprite属性,我必须做类似
的操作ship = new Ship(this);
ship.ship.y = 320;
ship.ship.x = 320;
有没有办法直接访问这些属性?我尝试制作 this = new new swfShip(),但这不起作用。
答案 0 :(得分:1)
如果您的Ship
课程不会延长Sprite
(您实际上不需要根据您的代码扩展它),最好的方法是:
public class Ship{
private var parentStage:Sprite;
public var ship:Sprite;
//...
public function set x(newval: int):void{
//check value
ship.x = newval;
}
public function set y(newval: int):void{
//check value
ship.y = newval;
}
}
答案 1 :(得分:0)
您创建了扩展Sprite的类,但它只将其他sprite(ship)添加到给定的父级。它包含船,但它不是船本身。将邮件addChild(ship)
发送给自己,然后根据需要使用new Ship()
。
答案 2 :(得分:0)
您可以添加方法setPosition(x:int, y:int)
来更轻松地完成此操作。
您也可以使用with
语句(有关详细信息,请参阅here)