Iasonic
%Europe/Berlin %545 %2010, 14:05
Kan iemand mij helpen met deze error, ik heb geen idee hoe ik er vanaf kom :(. Snap wel wat er staat maar het is gewoon niet logisch.
Ik maak een nieuwe collada element aan en voeg de onenterframe listner pas toe wanneer collada loading klaar is. Wanneer ik de marker weer in beeld breng en vervolgens weer weg haal krijg ik de onderstaande melding. Hoe kan ik het oplossen guys ik heb geen idee meer.
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.transmote.flar.utils.geom::FLARPVGeomUtils$/convertFLARMatrixToPVMatrix()[/FlashLib/FLARManager_v07/src/com/transmote/flar/utils/geom/FLARPVGeomUtils.as:57]
at com.vision.ui.collada::ColladaCreator/onEnterFrame()[/Projects/KinderenVoorKinderen_230100772/flash/classes/com/vision/ui/collada/ColladaCreator.as:169]
public class ColladaCreator extends Sprite {
private var _scene3D : Scene3D;
private var _camera3D : Camera3D;
private var _viewport3D : Viewport3D;
private var _renderEngine : LazyRenderEngine;
private var _pointLight3D : PointLight3D;
private var _d3stats : StatsView;
private var _activeMarker : FLARMarker;
private var _flarManager : FLARManager;
private var _trackData : TrackData;
private var _modelContainer : DisplayObject3D;
private var _model : DAE;
public function ColladaCreator() : void {
if(Model.getInstance().flarManagerParam && Model.getInstance().flarMarkerParam) {
initUI();
} else {
Yalog.error("ColladaCreator: NO FLARMANAGER AND FLARMARKER", toString());
}
}
private function initUI() : void {
_trackData = Model.getInstance().selectedArTrack;
_flarManager = Model.getInstance().flarManagerParam;
_activeMarker = Model.getInstance().flarMarkerParam;
Yalog.info("initUI: " + _flarManager, toString());
Yalog.info("initUI: " + _activeMarker, toString());
_flarManager.addEventListener(FLARMarkerEvent.MARK ER_ADDED, onMarkerAdded);
_flarManager.addEventListener(FLARMarkerEvent.MARK ER_UPDATED, onMarkerUpdated);
_flarManager.addEventListener(FLARMarkerEvent.MARK ER_REMOVED, onMarkerRemoved);
_scene3D = new Scene3D();
_camera3D = new FLARCamera3D(Model.getInstance().flarManagerParam. cameraParams);
_viewport3D = new Viewport3D(320, 240, false, true);
_viewport3D.x = 292;
_viewport3D.y = 92;
addChild(_viewport3D);
_renderEngine = new LazyRenderEngine(_scene3D, _camera3D, _viewport3D);
_pointLight3D = new PointLight3D();
_pointLight3D.x = 1000;
_pointLight3D.y = 1000;
_pointLight3D.z = -1000;
// load the model.
// (this model has to be scaled and rotated to fit the marker; every model is different.)
_model = new DAE(true, "model", true);
_model.addEventListener(FileLoadEvent.LOAD_COMPLET E, handleColladaLoaderComplete);
_model.addEventListener(FileLoadEvent.ANIMATIONS_C OMPLETE, handleAnimationLoad);
_model.addEventListener(FileLoadEvent.LOAD_ERROR, handleColladaError);
_model.load(_trackData.ar_collada, null, true);
_model.rotationX = 20;
_model.rotationY = 20;
_model.rotationZ = -90;
_model.scale = 4;
// create a container for the model, that will accept matrix transformations.
_modelContainer = new DisplayObject3D();
_modelContainer.visible = false;
Throbber.show();
}
private function onMarkerRemoved(event : FLARMarkerEvent) : void {
Yalog.debug("onMarkerRemoved: ", toString());
_modelContainer.visible = false;
_activeMarker = event.marker;
}
private function onMarkerUpdated(event : FLARMarkerEvent) : void {
Yalog.debug("onMarkerUpdated: ", toString());
_activeMarker = event.marker;
}
private function onMarkerAdded(event : FLARMarkerEvent) : void {
Yalog.debug("onMarkerAdded: ", toString());
_activeMarker = event.marker;
_modelContainer.visible = true;
}
private function handleLoadProgress(event : FileLoadEvent) : void {
}
private function handleColladaError(event : FileLoadEvent) : void {
// Yalog.debug("handleColladaError: " + event, toString());
}
private function handleAnimationLoad(event : FileLoadEvent) : void {
Yalog.debug("COLLADA ANIMATION LOADED:", toString());
_model.removeEventListener(FileLoadEvent.ANIMATION S_COMPLETE, handleColladaLoaderComplete);
}
private function handleColladaLoaderComplete(event : FileLoadEvent) : void {
Yalog.debug("COLLADA LOADED:", toString());
Throbber.hide();
_model.removeEventListener(FileLoadEvent.LOAD_ERRO R, handleColladaError);
_model.removeEventListener(FileLoadEvent.LOAD_PROG RESS, handleLoadProgress);
_model.removeEventListener(FileLoadEvent.LOAD_COMP LETE, handleColladaLoaderComplete);
_modelContainer.addChild(_model);
_scene3D.addChild(_modelContainer);
_modelContainer.visible = true;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function destroy() : void {
_flarManager.removeEventListener(FLARMarkerEvent.M ARKER_ADDED, onMarkerAdded);
_flarManager.removeEventListener(FLARMarkerEvent.M ARKER_UPDATED, onMarkerUpdated);
_flarManager.removeEventListener(FLARMarkerEvent.M ARKER_REMOVED, onMarkerRemoved);
_modelContainer.removeChild(_model);
_scene3D.removeChild(_modelContainer);
removeChild(_viewport3D);
_model = null;
_scene3D = null;
_viewport3D = null;
_renderEngine.destroy();
// removeChild(_d3stats);
// _d3stats = null;
}
private function onEnterFrame(event : Event = null) : void {
if(_activeMarker){
_modelContainer.transform = FLARPVGeomUtils.convertFLARMatrixToPVMatrix(_activ eMarker.transformMatrix, _flarManager.flarSource.mirrored = false);
}
_renderEngine.render();
}
}
Ik maak een nieuwe collada element aan en voeg de onenterframe listner pas toe wanneer collada loading klaar is. Wanneer ik de marker weer in beeld breng en vervolgens weer weg haal krijg ik de onderstaande melding. Hoe kan ik het oplossen guys ik heb geen idee meer.
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.transmote.flar.utils.geom::FLARPVGeomUtils$/convertFLARMatrixToPVMatrix()[/FlashLib/FLARManager_v07/src/com/transmote/flar/utils/geom/FLARPVGeomUtils.as:57]
at com.vision.ui.collada::ColladaCreator/onEnterFrame()[/Projects/KinderenVoorKinderen_230100772/flash/classes/com/vision/ui/collada/ColladaCreator.as:169]
public class ColladaCreator extends Sprite {
private var _scene3D : Scene3D;
private var _camera3D : Camera3D;
private var _viewport3D : Viewport3D;
private var _renderEngine : LazyRenderEngine;
private var _pointLight3D : PointLight3D;
private var _d3stats : StatsView;
private var _activeMarker : FLARMarker;
private var _flarManager : FLARManager;
private var _trackData : TrackData;
private var _modelContainer : DisplayObject3D;
private var _model : DAE;
public function ColladaCreator() : void {
if(Model.getInstance().flarManagerParam && Model.getInstance().flarMarkerParam) {
initUI();
} else {
Yalog.error("ColladaCreator: NO FLARMANAGER AND FLARMARKER", toString());
}
}
private function initUI() : void {
_trackData = Model.getInstance().selectedArTrack;
_flarManager = Model.getInstance().flarManagerParam;
_activeMarker = Model.getInstance().flarMarkerParam;
Yalog.info("initUI: " + _flarManager, toString());
Yalog.info("initUI: " + _activeMarker, toString());
_flarManager.addEventListener(FLARMarkerEvent.MARK ER_ADDED, onMarkerAdded);
_flarManager.addEventListener(FLARMarkerEvent.MARK ER_UPDATED, onMarkerUpdated);
_flarManager.addEventListener(FLARMarkerEvent.MARK ER_REMOVED, onMarkerRemoved);
_scene3D = new Scene3D();
_camera3D = new FLARCamera3D(Model.getInstance().flarManagerParam. cameraParams);
_viewport3D = new Viewport3D(320, 240, false, true);
_viewport3D.x = 292;
_viewport3D.y = 92;
addChild(_viewport3D);
_renderEngine = new LazyRenderEngine(_scene3D, _camera3D, _viewport3D);
_pointLight3D = new PointLight3D();
_pointLight3D.x = 1000;
_pointLight3D.y = 1000;
_pointLight3D.z = -1000;
// load the model.
// (this model has to be scaled and rotated to fit the marker; every model is different.)
_model = new DAE(true, "model", true);
_model.addEventListener(FileLoadEvent.LOAD_COMPLET E, handleColladaLoaderComplete);
_model.addEventListener(FileLoadEvent.ANIMATIONS_C OMPLETE, handleAnimationLoad);
_model.addEventListener(FileLoadEvent.LOAD_ERROR, handleColladaError);
_model.load(_trackData.ar_collada, null, true);
_model.rotationX = 20;
_model.rotationY = 20;
_model.rotationZ = -90;
_model.scale = 4;
// create a container for the model, that will accept matrix transformations.
_modelContainer = new DisplayObject3D();
_modelContainer.visible = false;
Throbber.show();
}
private function onMarkerRemoved(event : FLARMarkerEvent) : void {
Yalog.debug("onMarkerRemoved: ", toString());
_modelContainer.visible = false;
_activeMarker = event.marker;
}
private function onMarkerUpdated(event : FLARMarkerEvent) : void {
Yalog.debug("onMarkerUpdated: ", toString());
_activeMarker = event.marker;
}
private function onMarkerAdded(event : FLARMarkerEvent) : void {
Yalog.debug("onMarkerAdded: ", toString());
_activeMarker = event.marker;
_modelContainer.visible = true;
}
private function handleLoadProgress(event : FileLoadEvent) : void {
}
private function handleColladaError(event : FileLoadEvent) : void {
// Yalog.debug("handleColladaError: " + event, toString());
}
private function handleAnimationLoad(event : FileLoadEvent) : void {
Yalog.debug("COLLADA ANIMATION LOADED:", toString());
_model.removeEventListener(FileLoadEvent.ANIMATION S_COMPLETE, handleColladaLoaderComplete);
}
private function handleColladaLoaderComplete(event : FileLoadEvent) : void {
Yalog.debug("COLLADA LOADED:", toString());
Throbber.hide();
_model.removeEventListener(FileLoadEvent.LOAD_ERRO R, handleColladaError);
_model.removeEventListener(FileLoadEvent.LOAD_PROG RESS, handleLoadProgress);
_model.removeEventListener(FileLoadEvent.LOAD_COMP LETE, handleColladaLoaderComplete);
_modelContainer.addChild(_model);
_scene3D.addChild(_modelContainer);
_modelContainer.visible = true;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function destroy() : void {
_flarManager.removeEventListener(FLARMarkerEvent.M ARKER_ADDED, onMarkerAdded);
_flarManager.removeEventListener(FLARMarkerEvent.M ARKER_UPDATED, onMarkerUpdated);
_flarManager.removeEventListener(FLARMarkerEvent.M ARKER_REMOVED, onMarkerRemoved);
_modelContainer.removeChild(_model);
_scene3D.removeChild(_modelContainer);
removeChild(_viewport3D);
_model = null;
_scene3D = null;
_viewport3D = null;
_renderEngine.destroy();
// removeChild(_d3stats);
// _d3stats = null;
}
private function onEnterFrame(event : Event = null) : void {
if(_activeMarker){
_modelContainer.transform = FLARPVGeomUtils.convertFLARMatrixToPVMatrix(_activ eMarker.transformMatrix, _flarManager.flarSource.mirrored = false);
}
_renderEngine.render();
}
}