Flash 使用文档类中调用的类在后台创建as3isolib网格

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

我在这里真的迷路了。 我已经检查了很多关于“如何从文档类以外的代码中在舞台上添加内容”的答案,但我找不到一个简单的答案

我有两门课:

documentclass,在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.");

        }

    }

}
还有班级地图,我打电话给:

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)。您不必这样做,但它可以更轻松地与其他人共享代码,而不会产生混淆。