Quand on utilise des textures chargées de manières externes, il est nécessaires de pouvoir savoir à quel instant, elles ont été chargées pour les appliquer à nos objets 3D, dans le tutoriel d’hier nous avons vu une technique qui consiste à loader une image externe d’une manière conventionnel, en faire un objet BitmapData et l’ajouter à un BitmapMaterial.
Aujourd’hui, nous allons voir que les matériaux BitmapFileMaterial possèdent leur propre loader, ce qui est relativement pratique.
Nous créons donc notre BitmapFileMaterial (ligne 19) et lui passons le chemin vers notre image, puis nous plaçons deux écouteurs, pour écouter les évènements FileLoadEvent, un pour écouter la progression de l’image,pour faire un loading par exemple (ligne 21) et un évènement Complete pour écouter quand l’image est chargé.
Enfin quand l’image est chargé nous appelons la méthode buildPlane (ligne 29), créons notre plane et lui appliquons notre texture.
-
package {
-
import org.papervision3d.events.FileLoadEvent;
-
import org.papervision3d.materials.BitmapFileMaterial;
-
import org.papervision3d.objects.primitives.Plane;
-
import org.papervision3d.view.BasicView;
-
-
import flash.events.Event;
-
-
public class BasicScene extends BasicView {
-
-
public function BasicScene()
-
{
-
initMaterial();
-
startRendering();
-
}
-
-
private function initMaterial() : void
-
{
-
bfm = new BitmapFileMaterial("URL IMAGE");
-
bfm.addEventListener(FileLoadEvent.LOAD_COMPLETE, buildPlane);
-
bfm.addEventListener(FileLoadEvent.LOAD_PROGRESS, progressLoading);
-
}
-
-
private function progressLoading(event : FileLoadEvent) : void
-
{
-
trace("loading");
-
}
-
-
private function buildPlane(event : FileLoadEvent) : void
-
{
-
bfm.removeEventListener(FileLoadEvent.LOAD_COMPLETE, buildPlane);
-
bfm.removeEventListener(FileLoadEvent.LOAD_PROGRESS, progressLoading);
-
-
plane = new Plane(bfm, 50, 50, 4, 4);
-
scene.addChild(plane);
-
-
plane.z = ( camera.zoom * camera.focus ) – Math.abs(camera.z);
-
-
}
-
-
override protected function onRenderTick(event:Event=null):void
-
{
-
super.onRenderTick(event);
-
}
-
-
private var plane : Plane;
-
private var bfm : BitmapFileMaterial;
-
}
-
}


