matriz matrices ejemplos dinamico dinamicas dinamica declarar bidimensional array actionscript dynamic textures primitive away3d

actionscript - matrices - matriz dinamica java



Away3D 4.0 Carga de texturas dinĂ¡micas para primitivas desde matrices (1)

Tengo varias matrices que almacenan los atributos necesarios para construir primitivas. Una matriz almacena los anchos, otra almacena las alturas, otra las profundidades, x, y, z, etc. Tengo una más que almacena el nombre de archivo remoto para la textura que se aplicará. Después de obtener mi respuesta del servidor, intento aplicar las texturas a las primitivas. Cuando muevo la cámara para mirar el primitivo, no puedo verlo. Mi vista parece congelarse (la vista no se actualizará). Una vez que la cámara se ha movido más allá de la primitiva, puede volver a ver. ¿Algunas ideas?

private var loadedBuildingTextures:Object = new Object(); private var map_building_count:Number = 0; private var loadedBuildings:Number = 0; public var map_building_widths:Array; public var map_building_heights:Array; public var map_building_depths:Array; public var map_building_xs:Array; public var map_building_ys:Array; public var map_building_zs:Array; public var map_building_textures:Array; // I POPULATE THE ARRAYS BUT LEFT THAT CODE OUT FOR SIMPLICITY public function placeBuildings():void { trace(''FUNCTION: placeBuildings() fired''); var buildingsPlaced:Number = 0; for (var a:Number = 0; a < map_building_count; a++ ) { loadedBuildingTextures[''texture_'' + a.toString()] = new BitmapFileMaterial(map_building_textures[a]); // ASSIGNS THE BitmapFileMaterials TO AN OBJECT FOR REFERENCING LATER loadedBuildingTextures[''texture_'' + a.toString()].loader.contentLoaderInfo.addEventListener(Event.COMPLETE, postBuildingLoad); buildingsPlaced++; } trace(''placed '' + buildingsPlaced.toString() + '' of '' + map_building_count.toString() + '' buildings.''); // OUTPUT = "placed 4 of 4 buildings." trace(''FUNCTION: placeBuildings() completed''); } public function postBuildingLoad(event : Event):void { loadedBuildings++; if (int(loadedBuildings) == int(map_building_count)) { placeBuildingsStep2(); } } public function placeBuildingsStep2():void { trace(''RECEIVED ALL RESPONSES FROM SERVER FOR TEXTURES''); for (var a:Number = 0; a < map_building_count; a++ ) { cube = new Cube( loadedBuildingTextures[''texture_'' + a], // <----- THIS SEEMS TO BE THE PROBLEM map_building_widths[a], // WIDTH map_building_heights[a], // HEIGHT map_building_depths[a], // DEPTH 1, // WIDTH UNITS 1, // HEIGHT UNITS 1, // DEPTH UNITS true); cube.x = map_building_xs[a]; cube.y = map_building_ys[a]; cube.z = map_building_zs[a]; view.scene.addChild(cube); } }


Aunque esta publicación es antigua, resalta un problema importante. BitmapFileMaterial es más un atajo para probar que un esquema de producción preparada.

Recomiendo encarecidamente utilizar una cola de carga para activos externos (como LoaderMax o la nueva AssetLibrary en 4.0) y luego crear instancias del material según sea necesario.