我知道这里有类似的问题,但我没有找到适当的细节。什么是有用的肯定是对问题的解释,也许是一个基本的例子,以后搜索的任何人都可以申请。 (不要求你为我写这些,我只是觉得这些例子很有帮助)我不想让任何人感到不安,我有点担心在论坛上发帖......
我想知道基于从数组创建的切片创建屏幕的替代方法。我一直在尝试访问已经放置在屏幕上的动画片段,并试图追踪以找到引用它们的方法一直没有问题。
无论如何,采取类似于数组的基本内容,并将其连接到movieclip,然后在完成后如何访问movieclip本身。所以我一直在研究这个问题,并使用了许多不同的在线资源,所以我相信很多东西看起来很熟悉,只是用得更加混乱。
这需要数组来显示影片剪辑(我确定这里至少有一部分是不必要的,而且我认为我在这里做错了,这使得以后不能解决)所以这有用,但感觉相当笨重。
两者都来自同一主类文件。
function makeWorld (anyMap, tileW, tileH) {
var worldWidth = anyMap[0].length;
var worldHeight = anyMap.length;
var MAP = this.addChild(new mapHolder());
function tiler(MAP, i, j, tileW, tileH, tile)
{
MAP.addChild(tile);
tile.x = (j * tileW);
tile.y = (i * tileH);
}
for (var i = 0; i < worldWidth; ++i) {
for (var j = 0; j < worldHeight; ++j) {
var curTile:int = anyMap[i][j];
if (curTile == 101) {
var tile1 = new tileGround();
tiler (MAP, i, j, tileW, tileH, tile1);
...
else {
var tile3 = new empty();
tiler (MAP, i, j, tileW, tileH, tile3);
}
}}}
然后有人试图引用它,我遇到了这个问题。我不知道该叫什么.MAP.tileGround by,我尝试了很多东西。我读过它并不是一个好主意,当它不是很先进的时候通过名字来引用,所以我也想避免那种事情。
addEventListener (Event.ENTER_FRAME, hits);
function hits (event:Event) {
var tileCatchG:MovieClip = this.MAP.tileGround;
if(tileCatchG.hitTestPoint(this.MAP.Char.x + leftBumpPoint.x, this.MAP.Char.y + leftBumpPoint.y, true)){
leftBumping = true;
} else {
leftBumping = false;
}
...
}
谢谢!
答案 0 :(得分:1)
在第二次查看你正在做的事情时,你应该看到代表地图的2索引数组。
您可以在文件顶部创建一个常规(单个索引)数组,如
public var tileArray:Array = [];
然后在你创建它们的地方将它们推入数组
var tile1 = new tileGround();
tileArray.push(tile1);
然后引用它们所有你可以运行一个简单的循环
for each(var tile:MovieClip in tileArray)
{
//Do stuff
if(tile instanceof tileGround)
{
//Do stuff specific to tileGround
}
}