Flash 使用文档类中调用的类在后台创建as3isolib网格
我在这里真的迷路了。 我已经检查了很多关于“如何从文档类以外的代码中在舞台上添加内容”的答案,但我找不到一个简单的答案 我有两门课: documentclass,在FLA上声明:Flash 使用文档类中调用的类在后台创建as3isolib网格,flash,actionscript-3,Flash,Actionscript 3,我在这里真的迷路了。 我已经检查了很多关于“如何从文档类以外的代码中在舞台上添加内容”的答案,但我找不到一个简单的答案 我有两门课: documentclass,在FLA上声明: package { import as3isolib.display.scene.IsoGrid; import as3isolib.display.IsoView; import as3isolib.display.primitive.IsoBox; import as3isolib
package
{
import as3isolib.display.scene.IsoGrid;
import as3isolib.display.IsoView;
import as3isolib.display.primitive.IsoBox;
import as3isolib.display.scene.IsoScene;
import flash.display.Sprite;
import com.sb.*;
import com.sb.services.*;
import as3isolib.geom.Pt;
//[SWF(width='760', height='600', backgroundColor='#000000', frameRate='30')]
public class iso extends Sprite
{
private var grid:IsoGrid;
private var scene:IsoScene;
private var view:IsoView;
//Script de Execução do jogo, depois do preloader.
public function iso()
{
trace("It's Alive!");
var map = new Map();
map.IsoStarter();
trace("Ending Loader.");
}
}
}
还有班级地图,我打电话给:
package com.sb
{
import as3isolib.display.scene.IsoGrid;
import as3isolib.display.IsoView;
import as3isolib.display.primitive.IsoBox;
import as3isolib.display.scene.IsoScene;
import flash.display.MovieClip;
import com.sb.*;
import com.sb.services.*;
import as3isolib.geom.Pt;
public class Map extends MovieClip
{
private var grid:IsoGrid;
private var scene:IsoScene;
private var view:IsoView;
public function Map()
{
//Loading ISO
}
public function MakeMap()
{
}
public function EnableScrolling()
{
}
public function IsoStarter()
{
//Load ISO + Iso Configuration
var box:IsoBox = new IsoBox();
box.moveTo(15, 15, 0);
var grid = new IsoGrid();
grid.setGridSize(400, 400, 5);
grid.cellSize = 25;
grid.showOrigin = false;
var scene = new IsoScene();
scene.addChild(box);
scene.addChild(grid);
scene.render();
var view = new IsoView();
view.setSize(760, 600);
view.centerOnPt(new Pt(150,150,0));
view.addScene(scene);
super.addChild(view);
}
}
}
顺便说一句:这个很好用(Being document类),但对我来说组织不够:
package
{
import as3isolib.display.scene.IsoGrid;
import as3isolib.display.IsoView;
import as3isolib.display.primitive.IsoBox;
import as3isolib.display.scene.IsoScene;
import flash.display.Sprite;
import com.sb.*;
import com.sb.services.*;
import as3isolib.geom.Pt;
//[SWF(width='760', height='600', backgroundColor='#000000', frameRate='30')]
public class iso extends Sprite
{
private var grid:IsoGrid;
private var scene:IsoScene;
private var view:IsoView;
//Script de Execução do jogo, depois do preloader.
public function iso()
{
trace("It's Alive!");
IsoStarter();
trace("Ending Loader.");
}
/* *
* Iso não pode ser chamado de outra classe senão a Document Root
* Se for encontrado um jeito para fazer isso, transferir essas
* funções para outro script, afim de manter a ordem.
*/
public function IsoStarter()
{
//Load ISO + Iso Configuration
var box:IsoBox = new IsoBox();
box.moveTo(15, 15, 0);
var grid = new IsoGrid();
grid.setGridSize(400, 400, 5);
grid.cellSize = 25;
grid.showOrigin = false;
var scene = new IsoScene();
scene.addChild(box);
scene.addChild(grid);
scene.render();
var view = new IsoView();
view.setSize(760, 600);
view.centerOnPt(new Pt(150,150,0));
view.addScene(scene);
super.addChild(view);
}
}
}
谢谢 在地图类中,
super.addChild(视图)代码>正在将您的视图添加到movieclip。请尝试parent.addChild(视图)
或stage.addChild(视图)
。如果两者都不起作用,请尝试将对文档类的引用传递到映射中:
更改文档类以将对其自身的引用传递到映射:
public function iso()
{
trace("It's Alive!");
var map = new Map(this);
map.IsoStarter();
trace("Ending Loader.");
}
并更改Map类中的构造函数:
public class Map extends MovieClip
{
private var grid:IsoGrid;
private var scene:IsoScene;
private var view:IsoView;
private var parentRef:iso; // <-----------
public function Map(parentClass:iso) // <-----------
{
this.parentRef = parentClass;
//Loading ISO
}
public function MakeMap()
{
}
public function EnableScrolling()
{
}
public function IsoStarter()
{
//Load ISO + Iso Configuration
var box:IsoBox = new IsoBox();
box.moveTo(15, 15, 0);
var grid = new IsoGrid();
grid.setGridSize(400, 400, 5);
grid.cellSize = 25;
grid.showOrigin = false;
var scene = new IsoScene();
scene.addChild(box);
scene.addChild(grid);
scene.render();
var view = new IsoView();
view.setSize(760, 600);
view.centerOnPt(new Pt(150,150,0));
view.addScene(scene);
parentRef.addChild(view); // <-----------
}
}
public类映射扩展了MovieClip
{
私有var网格:IsoGrid;
私人var场景:等场景;
私有var视图:IsoView;
private var parentRef:iso;//很抱歉出现格式错误:cNo问题。请使用4个空格创建代码块。普通文本后必须有一个空行,这样才能正常工作。``用于内联代码。谢谢,我感谢您的更正。另外,AS3中常用的惯例是将类名大写(iso,Map)对于函数名使用camelCase(isoStarter,enableScrolling)。您不必这样做,但它可以更轻松地与其他人共享代码,而不会产生混淆。