Показать сообщение отдельно
Старый 12.05.2013, 23:30
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>Просто жутко грузит флешку! Есть идеи как уменьшить объём занимаемой памяти?

тут не совсем понятны надежды уменьшить нагрузку за счет оптимизации памяти
имхо нормально приведенный код пользует память, а то что грузит, так от graphics.drawTriangles чудес давно никто не ждет

как вариант: уходить на движки, использующие Stage3D
ради интереса глянул в away3d примерно такой же расклад и с такой же картой, так он памяти берет в два с лишним раза больше, но тормозов нет даже и в намеке
Код AS3:
package
{
	import away3d.cameras.*;
	import away3d.containers.*;
	import away3d.controllers.*;
	import away3d.entities.*;
	import away3d.materials.*;
	import away3d.primitives.*;
	import away3d.textures.*;
	import away3d.utils.*;
	import flash.display.*;
	import flash.events.*;
 
	[SWF(backgroundColor="#000000",frameRate="30")]
 
	public class TestGlobe extends Sprite
	{
 
		[Embed(source="map.jpg")]
		public static var map_jpg:Class;
 
		private var scene:Scene3D;
		private var camera:Camera3D;
		private var view:View3D;
		private var cameraController:HoverController;
 
		private var earthMaterial:TextureMaterial;
		private var earth:Mesh;
 
		private var сontainer:ObjectContainer3D;
 
		public function TestGlobe()
		{
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
 
			scene = new Scene3D();
			camera = new Camera3D();
			view = new View3D();
			view.scene = scene;
			view.camera = camera;
			cameraController = new HoverController(camera, null, 0, 0, 600, -90, 90);
			cameraController.yFactor = 1;
			addChild(view);
 
			earthMaterial = new TextureMaterial(Cast.bitmapTexture(map_jpg));
 
			earth = new Mesh(new SphereGeometry(200, 200, 100), earthMaterial);
			сontainer = new ObjectContainer3D();
			сontainer.rotationX = -23;
			сontainer.addChild(earth);
			scene.addChild(сontainer);
			cameraController.lookAtObject = сontainer;
 
			addEventListener(Event.ENTER_FRAME, render);
 
		}
 
		private function render(e:Event):void
		{
			earth.rotationY += 0.2;
			view.render();
		}
 
	}
}