I’m really lost here.
I already checked many answers to “how to add something on stage from code that isn’t on document class” but I cannot find an easy answer.
Well, I have two classes:
documentclass, declared on the FLA:
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.");
}
}
}
and the class map, i’m calling:
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);
}
}
}
BTW: This one works perfectly (beeing document class), but is not organized enough for me:
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);
}
}
}
Thanks.
In your Map class,
super.addChild(view);is adding your view to movieclip. Try eitherparent.addChild(view)orstage.addChild(view). If neither of those work, try passing a reference to your document class into Map:Change your document class to pass a reference to itself to Map:
And change the constructor in your Map class: