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.