Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.07.2011, 22:33
lexiterl вне форума Посмотреть профиль Отправить личное сообщение для lexiterl Найти все сообщения от lexiterl
  № 1  
Ответить с цитированием
lexiterl

Регистрация: Jul 2011
Сообщений: 1
По умолчанию 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;
			}
		}
 
	}
}

Старый 05.07.2011, 02:18
flashfoxter вне форума Посмотреть профиль Отправить личное сообщение для flashfoxter Найти все сообщения от flashfoxter
  № 2  
Ответить с цитированием
flashfoxter

Регистрация: Jun 2011
Сообщений: 91
А вас не затруднило бы поделиться соображениями, которыми вы пользовались при выборе данного 3D движка ?

Старый 05.07.2011, 03:13
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
А вас не затруднило бы поделиться соображениями, которыми вы пользовались при выборе данного 3D движка ?
Гугл думаю решил
__________________
Марк Tween

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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