Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   sandy 3d, работа с классами (http://www.flasher.ru/forum/showthread.php?t=159734)

lexiterl 04.07.2011 22:33

sandy 3d, работа с классами
 
Здравствуйте!
Работа заключается в том, что мне необходимо визуализировать массив данных из хмл в виде трехмерного графика. Для работы был выбран движок Сэнди. На данном этапе столкнулась с проблемой передачи массива данных из одного класса в другой. Подскажите пожалуйста как правильно это реализовать?
Листинг ас файла
Код AS3:

package {
        import flash.display.Sprite;
        import flash.events.*;
        import flash.ui.*;
        import sandy.core.Scene3D;
        import sandy.core.data.*;
 
        import sandy.core.scenegraph.*;
        import sandy.materials.*;
        import sandy.materials.attributes.*;
        import sandy.primitive.*;
        //для подключения xml
        import flash.net.URLLoader;
        import flash.net.URLLoaderDataFormat;
 
        import flash.net.URLRequest;
 
        public class Example003 extends Sprite {
                private var scene:Scene3D;
                private var camera:Camera3D;
                //подключение xml
                public var erwer=URLLoaderDataFormatExample();
                public function URLLoaderDataFormatExample() {
 
                        var request:URLRequest=new URLRequest("uirs.xml");
                        var variables:URLLoader=new URLLoader  ;
 
                        variables.addEventListener(Event.COMPLETE,completeHandler);
 
                        try {
                                variables.load(request);
                        } catch (error:Error) {
                                trace("Unable to load URL: "+error);
                        }
                }
 
 
                public function completeHandler(event:Event):void {
                        var loader:URLLoader=URLLoader(event.target);
 
                        var dataXML:XML=XML(event.target.data);
                        dataXML.ignoreWhite=true;
                        trace(dataXML);
 
                        //массивы для координат x, y, z
                        var myArray_x:Array=[];
                        var myArray_y:Array=[];
                        var myArray_z:Array=[];
 
                        var col_x;
 
                        var col_y;
                        var col_z;
 
                        var i=0;
 
                        //кол-во записей в xml
                        var num=dataXML.child("uirs").length();
                        //trace(num);
 
                        for (i=0; i<num; i++) {
                                col_x=dataXML.uirs[i].os_x;
                                col_y=dataXML.uirs[i].os_y;
                                col_z=dataXML.uirs[i].os_z;
 
                                //заполнение массива
                                myArray_x[i]=col_x;
                                myArray_y[i]=col_y;
                                myArray_z[i]=col_z;
 
                        }
 
                        trace("массив х " +myArray_x);
 
                }
 
 
                public function Example003() {
                        //создание камеры
                        camera=new Camera3D(300,300);
                        camera.x=100;
                        camera.y=100;
                        camera.z=-400;
                        camera.lookAt(0,0,0);
 
                        // We create the "group" that is the tree of all the visible objects
                        var root:Group=createScene();
 
                        // We create a Scene and we add the camera and the objects tree
                        scene=new Scene3D("scene",this,camera,root);
 
                        // Listen to the heart beat and render the scene
                        addEventListener( Event.ENTER_FRAME, enterFrameHandler );
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
 
                }
                function createScene():Group {
                        // Create the root Group
                        var g:Group=new Group  ;
 
 
                        var Array1:Array=[50,0,150,50,-80,30, -40,55,-100,-70];
                        var Array2:Array=[100,150,50,150,-30,100,85,-40,70,-20];
                        var Array3:Array=[30,100,100,50,-50,80, 60,30,-50,-50];
                        trace(Array1);
                        //координатные оси
 
                        var myxLine:Line3D=new Line3D("x-coord",new Point3D(-100,0,0),new Point3D(100,0,0));
                        var myyLine:Line3D=new Line3D("z-coord",new Point3D(0,0,-150),new Point3D(0,0,200));
                        var myzLine:Line3D=new Line3D("y-coord",new Point3D(0,-100,0),new Point3D(0,100,0));
                        var materialAttr:MaterialAttributes = new MaterialAttributes(
                                            new LineAttributes( 2, 0x990000),
                                            new LightAttributes( true, 0.1)
                                          );
                        var material:Material=new ColorMaterial(0xFF0000,1,materialAttr);
                        material.lightingEnable=true;
                        var app:Appearance=new Appearance(material);
                        myxLine.appearance=app;
                        myyLine.appearance=app;
                        myzLine.appearance=app;
 
                        var j=0;
                        //цикл для построения точек
                        for (j = 0; j <= Array1.length; j++) {
 
 
                                var my1xLine:Line3D=new Line3D("x-coord",new Point3D(Array1[j],Array2[j],Array3[j]-2),new Point3D(Array1[j],Array2[j],Array3[j]+2));
                                var my1yLine:Line3D=new Line3D("y-coord",new Point3D(Array1[j],Array2[j]-2,Array3[j]),new Point3D(Array1[j],Array2[j]+2,Array3[j]));
                                var my1zLine:Line3D=new Line3D("z-coord",new Point3D(Array1[j]-2,Array2[j],Array3[j]),new Point3D(Array1[j]+2,Array2[j],Array3[j]));
 
                                g.addChild(my1xLine);
                                g.addChild(my1yLine);
                                g.addChild(my1zLine);
 
 
                        }
                        g.addChild(myxLine);
                        g.addChild(myyLine);
                        g.addChild(myzLine);
                        return g;
                }
                function enterFrameHandler(event:Event):void {
                        scene.render();
 
 
                }
                function keyPressed(event:KeyboardEvent):void {
                        switch (event.keyCode) {
                                case Keyboard.UP :
                                        camera.tilt+=2;
                                        break;
                                case Keyboard.DOWN :
                                        camera.tilt-=2;
                                        break;
                                case Keyboard.RIGHT :
                                        camera.pan-=2;
                                        break;
                                case Keyboard.LEFT :
                                        camera.pan+=2;
                                        break;
                                case Keyboard.CONTROL :
                                        camera.roll+=2;
                                        break;
                                case Keyboard.PAGE_DOWN :
                                        camera.z-=5;
                                        break;
                                case Keyboard.PAGE_UP :
                                        camera.z+=5;
 
                                        break;
                        }
                }
 
        }
}


flashfoxter 05.07.2011 02:18

А вас не затруднило бы поделиться соображениями, которыми вы пользовались при выборе данного 3D движка ?

in4core 05.07.2011 03:13

Цитата:

А вас не затруднило бы поделиться соображениями, которыми вы пользовались при выборе данного 3D движка ?
Гугл думаю решил


Часовой пояс GMT +4, время: 01:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.