如何在as3实心网格中附加movieClip?

时间:2014-01-13 12:14:08

标签: actionscript-3 flash-cs5

我是初学者,使用AS3和as3isolib。我试图将fla库中的一些MC添加到isoGrid对象中。我试图使用IsoGrid类的addChild()方法,但它给了我一个错误说:1067:类型[MovieClip Name]的值隐式强制到不相关的类型as3isolib.data:INode。我认为我希望我使用节点类。

知道如何做这样的事情吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

as3isolib使用它自己的display list类似渲染树,添加此树中的所有节点必须实现as3isolib.data:INode。将Flash本机显示对象添加到IsoScene

有两种可能性

看看这个小教程:

    //create IsoView, IsoScene and IsoGrid - default from as3isolib
    var view:IsoView = new IsoView();
    view.setSize(stage.stageWidth, stage.stageHeight);
    addChild(view);

    var scene:IsoScene = new IsoScene();
    view.addScene(scene);

    var grid:IsoGrid = new IsoGrid({cellSize:32});
    grid.setGridSize(800, 600);
    grid.stroke = new Stroke(0, 0x576F33);
    grid.render();

    //create iso box, just for demo
    var obj:IsoBox = new IsoBox();
    obj.setSize(32, 32, 64);
    obj.moveTo(5*32, 5*32, 1);

    //first possiblity to add flash.display.Shape to the iso scene - using IsoSprite.sprites
    var isoSprite:IsoSprite = new IsoSprite();
    isoSprite.moveTo(5*32, 7*32, 1);

    var shape1:Shape = new Shape();
    shape1.graphics.beginFill(0xFF0000, 1);
    shape1.graphics.drawRect(0, 0, 32, 32);
    isoSprite.sprites = [shape1];

    //second possiblity to add flash.display.Shape to the iso scene - using IsoDisplayObject.container
    var isoObj:IsoDisplayObject = new IsoDisplayObject();
    isoObj.moveTo(7*32, 7*32, 1);

    var shape2:Shape = new Shape();
    shape2.graphics.beginFill(0x0000FF, 1);
    shape2.graphics.drawRect(0, 0, 32, 32);
    isoObj.container.addChild(shape2);

    //add all objects to the scene and render all
    scene.addChild(grid);
    scene.addChild(obj);
    scene.addChild(isoSprite);
    scene.addChild(isoObj);
    scene.render();