【发布时间】:2015-04-09 00:24:45
【问题描述】:
所以我一直在阅读很多关于继承和循环依赖的文章,但我认为没有办法解决这个问题。对多个课程来说还是有点新意。我的文档类创建字段。我的 Field 类创建播放器并从 Tile MovieClip 推送 bitmapData。我希望玩家能够将该 bitmapData 绘制到该字段。 Engine.as(文档类):
package {
import flash.display.MovieClip;
public class Engine extends MovieClip {
private var field:Field;
public static var _tilesData:Array = [];
public function Engine()
{
field = new Field();
field.x = 0;
field.y = 0;
addChild(field);
}
}
字段.as:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.display.BitmapData;
import flash.display.Bitmap;
public class Field extends MovieClip{
private var player:Player;
private var sampleTile:Tile = new Tile();
public function Field()
{
player = new Player();
player.x = 0;
player.y = 0;
addChild(player);
GetSampleTiles();
}
public function GetSampleTiles()
{
for (var i:int = 0;i < 3; i++)
{
sampleTile.gotoAndStop(i);
var graphicData:BitmapData = new BitmapData(32,32);
graphicData.draw(sampleTile);
Engine._tilesData.push(graphicData);
}
}
public function DrawATile(tileToDraw:BitmapData)
{
var newTile:Bitmap = new Bitmap(tileToDraw);
newTile.x = player.x;
newTile.y = player.y;
addChild(newTile);
}
}
} 玩家身份:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.display.BitmapData;
import flash.display.Bitmap;
public class Player extends MovieClip
{
public var _inp:Input = new Input();
public function Player()
{
addChild(_inp);
addEventListener(Event.ENTER_FRAME, HandleKeys);
}
public function HandleKeys(e:Event)
{
if(_inp.keyUp)
{
y -= 32;
}
if(_inp.keyDown)
{
y += 32;
}
if(_inp.keyLeft)
{
x -= 32;
}
if(_inp.keyRight)
{
x += 32;
}
if(_inp.keySpace)
{
parent.DrawATile(Engine._tilesData[0]);
}
}
}
}
还有比我看到的更好的方法吗?当我将 DrawATile 函数放入 Player.as 时,它可以工作......但瓷砖会随着播放器移动。
【问题讨论】:
-
呃……我一直在这样做。我觉得好傻parent.addChild(newTile); 掌心
-
那么这个问题已经回答了吗?如果是这样,请创建一个您为解决此问题所做的答案并将其标记为正确。别担心这只是学习的一部分,我今天搞砸了代码,感觉自己像个白痴,但你越做越好。
标签: actionscript-3