[Papervision3D] movieAssetMaterial play and stop
Javier España | javierespana.com
info at javierespana.com
Thu Jul 16 07:19:11 PDT 2009
Tried the first suggestion and it throws this error:
*1061: Call to a possibly undefined method traceMe through a reference with
static type flash.display:DisplayObject.*
I'm relativly new to PV3D and can't figure out completly the second
suggestion, what should I replace? Shall I never create the
MovieAssetMaterial?
Here's the code again:
package{
///
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
///
import org.papervision3d.view.Viewport3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.materials.*;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.render.BasicRenderEngine;
///
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.shaders.GouraudShader;
import org.papervision3d.materials.shaders.ShadedMaterial;
///
public class walkingTest_04 extends Sprite{
///
private var viewport:Viewport3D;
private var scene:Scene3D;
private var camera:Camera3D;
private var movieAssetMaterial:MovieAssetMaterial;
private var walkingDoll:Plane;
private var renderer:BasicRenderEngine;
///
private var gShader:GouraudShader;
private var gMaterial:ShadedMaterial;
private var light:PointLight3D;
///
private var cameraPitch:Number = 90;
private var cameraYaw:Number = 270;
private var previousMouseX:Number = 0;
private var previousMouseY:Number = 0;
public function walkingTest_04():void{
///
viewport = new Viewport3D(550, 400, false, true);
addChild(viewport);
///
scene = new Scene3D();
camera = new Camera3D();
renderer = new BasicRenderEngine();
///
light = new PointLight3D();
///
movieAssetMaterial = new MovieAssetMaterial("walkingTest",
true);
movieAssetMaterial.animated = true;
movieAssetMaterial.doubleSided = true;
movieAssetMaterial.interactive = true;
///
gShader = new GouraudShader(light, 0xFFFFFF, 0x111111, 30);
gMaterial = new ShadedMaterial(movieAssetMaterial, gShader);
gMaterial.doubleSided = true;
///
walkingDoll = new Plane(gMaterial, 600, 600, 3, 3);
scene.addChild(light);
scene.addChild(walkingDoll);
///
movieAssetMaterial.movie.traceMe();
///
stage.addEventListener(Event.ENTER_FRAME, procesarFrame);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoving);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheel);
}
private function mouseWheel(event:MouseEvent):void{
///
camera.moveForward(10 * event.delta);
}
private function mouseMoving(event:MouseEvent):void{
///
var differenceX:Number = event.stageX - previousMouseX;
var differenceY:Number = event.stageY - previousMouseY;
///
cameraPitch += differenceY;
cameraYaw += differenceX;
///
previousMouseX = event.stageX;
previousMouseY = event.stageY;
}
private function procesarFrame(e:Event):void{
///
cameraPitch %= 360;
cameraYaw %= 360;
///
cameraPitch = cameraPitch > 0 ? cameraPitch : 0.0001;
cameraPitch = cameraPitch < 90 ? cameraPitch : 89.9999;
///
camera.orbit(cameraPitch, cameraYaw);
///
light.x = (mouseX - 275) * 5;
light.y = (mouseY - 200) * -5;
///
renderer.renderScene(scene, camera, viewport);
}
}
}
On Thu, Jul 16, 2009 at 10:48 AM, <nospam at therossman.org> wrote:
>
> Instead of using a MovieAssetMaterial, just use a regular movie material
> where you create the material first with like:
>
> var myMaterialMC:MovieClip = new yourMaterialMCName();
>
> then when you make a movie material out of that you can still keep your
> reference to "myMaterialMC" and you should be able to use like:
>
> myMaterialMC.animatedDoll.stop();
>
> or what have you.
>
> This shouldn't be that hard, you must be missing something simple.
>
> Cheers,
> mark
>
> >
> > Why don't you try another approach:
> >
> > Place a function on the main timeline of the movieclip that you are using
> > as
> > a material:
> >
> > function traceMe() {
> > trace("hello there");
> > }
> >
> > Then, see if you can call that function from papervision with
> > movieAssetMaterial.movie.traceMe();
> >
> > If that works, then you can set up a series of controller functions for
> > your
> > nested movieclips on the material's main timeline and call them from
> > papervision. That way, Papervision doesn't need a reference to all of
> your
> > nested movieclips - it just needs a reference to the main one.
> >
> > -Andy
> >
> >
> >
> >
> >
> > Maggical wrote:
> >>
> >> Any help with this? =(
> >>
> >> 2009/7/15 Javier España | javierespana.com <info at javierespana.com>
> >>
> >>> It gives me this error:
> >>>
> >>> "Access of undefined property DislpayObjectContainer" :S
> >>>
> >>> I'm googling and searching but it seems weird...
> >>>
> >>>
> >>> On Wed, Jul 15, 2009 at 1:09 PM, Damien Pegoraro
> >>> <dpegoraro at actiplay.com>wrote:
> >>>
> >>>> try trace(movieAssetMaterial.movie["animatedDoll"]);
> >>>> or in a cleaner way
> >>>> trace( (movieAssetMaterial.movie as
> >>>> DisplayObjectContainer).getChildByName("animatedDoll"));
> >>>>
> >>>>
> >>>> Javier España | javierespana.com a écrit :
> >>>>
> >>>>> I'm tracing this:
> >>>>>
> >>>>> trace(movieAssetMaterial);
> >>>>> trace(movieAssetMaterial.movie);
> >>>>> trace(movieAssetMaterial.movie.animatedDoll);
> >>>>>
> >>>>> First two are ok, but the last one generates 3 errors, any ideas?
> >>>>>
> >>>>> 1119: Access to a possibly undefined property animatedDoll through a
> >>>>> reference with static type flash.display:DisplayObject
> >>>>>
> >>>>> Maybe this will help someone help me =)
> >>>>>
> >>>>> 2009/7/15 Javier España | javierespana.com <http://javierespana.com
> >
> >>>>> <
> >>>>> info at javierespana.com <mailto:info at javierespana.com>>
> >>>>>
> >>>>> Tried both of those solutions and none of them worked :S I seem to
> >>>>> be missing something :S Any other ideas?
> >>>>>
> >>>>>
> >>>>> On Tue, Jul 14, 2009 at 7:31 PM, Mark I. Ross
> >>>>> <nospam at therossman.org <mailto:nospam at therossman.org>> wrote:
> >>>>>
> >>>>> what if you just replace these two lines:
> >>>>>
> >>>>> var obj:*= getMaterial(plane as displayObject3D);
> >>>>> obj.animatedDoll.stop();
> >>>>>
> >>>>> with:
> >>>>>
> >>>>> movieAssetMaterial.movie.animatedDoll.stop();
> >>>>>
> >>>>>
> >>>>> also if you aren't going to do that, or it doesn't work, the
> >>>>> other suggestion is:
> >>>>>
> >>>>>
> >>>>> var obj:*= getMaterial(plane as displayObject3D);
> >>>>>
> >>>>> should be:
> >>>>>
> >>>>> var obj:*= getMaterial(walkingDoll as displayObject3D);
> >>>>>
> >>>>>
> >>>>> HTH,
> >>>>> mark
> >>>>>
> >>>>>
> >>>>>
> >>>>> Javier España | javierespana.com <http://javierespana.com>
> >>>>> wrote:
> >>>>>
> >>>>>> Nope, can't seem to make it work, I may be doing something
> >>>>>> wrong... Here's the complete code:
> >>>>>>
> >>>>>> -----------------------------
> >>>>>>
> >>>>>> package{
> >>>>>> ///
> >>>>>> import flash.display.Sprite;
> >>>>>> import flash.events.Event;
> >>>>>> import flash.events.MouseEvent;
> >>>>>> ///
> >>>>>> import org.papervision3d.view.Viewport3D;
> >>>>>> import org.papervision3d.scenes.Scene3D;
> >>>>>> import org.papervision3d.cameras.Camera3D;
> >>>>>> import org.papervision3d.materials.*;
> >>>>>> import org.papervision3d.objects.primitives.Plane;
> >>>>>> import org.papervision3d.render.BasicRenderEngine;
> >>>>>> ///
> >>>>>> import org.papervision3d.lights.PointLight3D;
> >>>>>> import org.papervision3d.materials.shaders.GouraudShader;
> >>>>>> import
> >>>>>> org.papervision3d.materials.shaders.ShadedMaterial;
> >>>>>> ///
> >>>>>> public class walkingTest_04 extends Sprite{
> >>>>>> ///
> >>>>>> // VARIABLES
> >>>>>> ///
> >>>>>> private var viewport:Viewport3D;
> >>>>>> private var scene:Scene3D;
> >>>>>> private var camera:Camera3D;
> >>>>>> private var movieAssetMaterial:MovieAssetMaterial;
> >>>>>> private var walkingDoll:Plane;
> >>>>>> private var renderer:BasicRenderEngine;
> >>>>>> ///
> >>>>>> // MATERIAL SHADER
> >>>>>> ///
> >>>>>> private var gShader:GouraudShader;
> >>>>>> private var gMaterial:ShadedMaterial;
> >>>>>> private var light:PointLight3D;
> >>>>>> ///
> >>>>>> // MOUSE MOVEMENT
> >>>>>> ///
> >>>>>> private var cameraPitch:Number = 90;
> >>>>>> private var cameraYaw:Number = 270;
> >>>>>> private var previousMouseX:Number = 0;
> >>>>>> private var previousMouseY:Number = 0;
> >>>>>>
> >>>>>> /*----------------------- INITIALIZE
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- INITIALIZE
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- INITIALIZE
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- INITIALIZE
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- INITIALIZE
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- INITIALIZE
> >>>>>> -----------------------*/
> >>>>>>
> >>>>>> public function walkingTest_04():void{
> >>>>>> ///
> >>>>>> // VIEWPORT
> >>>>>> ///
> >>>>>> viewport = new Viewport3D(550, 400, false, true);
> >>>>>> addChild(viewport);
> >>>>>> ///
> >>>>>> // BASICS PV3D
> >>>>>> ///
> >>>>>> scene = new Scene3D();
> >>>>>> camera = new Camera3D();
> >>>>>> renderer = new BasicRenderEngine();
> >>>>>> ///
> >>>>>> // MATERIALS
> >>>>>> ///
> >>>>>> light = new PointLight3D();
> >>>>>> ///
> >>>>>> movieAssetMaterial = new
> >>>>>> MovieAssetMaterial("walkingTest", true);
> >>>>>> movieAssetMaterial.animated = true;
> >>>>>> movieAssetMaterial.doubleSided = true;
> >>>>>> movieAssetMaterial.interactive = true;
> >>>>>> ///
> >>>>>> gShader = new GouraudShader(light, 0xFFFFFF,
> >>>>>> 0x111111, 30);
> >>>>>> gMaterial = new
> >>>>>> ShadedMaterial(movieAssetMaterial, gShader);
> >>>>>> gMaterial.doubleSided = true;
> >>>>>> ///
> >>>>>> // OBJECTS
> >>>>>> ///
> >>>>>> walkingDoll = new Plane(gMaterial, 600, 600, 3,
> >>>>>> 3);
> >>>>>> scene.addChild(light);
> >>>>>> scene.addChild(walkingDoll);
> >>>>>> ///
> >>>>>> var obj:*= getMaterial(plane as displayObject3D);
> >>>>>> obj.animatedDoll.stop();
> >>>>>> ///
> >>>>>> // LISTENERS
> >>>>>> ///
> >>>>>> stage.addEventListener(Event.ENTER_FRAME,
> >>>>>> procesarFrame);
> >>>>>> stage.addEventListener(MouseEvent.MOUSE_MOVE,
> >>>>>> mouseMoving);
> >>>>>> stage.addEventListener(MouseEvent.MOUSE_WHEEL,
> >>>>>> mouseWheel);
> >>>>>> }
> >>>>>>
> >>>>>> /*----------------------- MATERIAL STOP & PLAY
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MATERIAL STOP & PLAY
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MATERIAL STOP & PLAY
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MATERIAL STOP & PLAY
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MATERIAL STOP & PLAY
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MATERIAL STOP & PLAY
> >>>>>> -----------------------*/
> >>>>>>
> >>>>>> protected function getMaterial(donde:*):MovieClip{
> >>>>>> ///
> >>>>>> var mat:MovieMaterial = donde.material as
> >>>>>> MovieMaterial;
> >>>>>> ///
> >>>>>> if(mat){
> >>>>>> ///
> >>>>>> //cast as our sub class, then test for null
> >>>>>> var mov:MovieClip = mat.movie as MovieClip;
> >>>>>> if(mov){
> >>>>>> ///
> >>>>>> // now you’re talking to the instance
> >>>>>> directly
> >>>>>> return mov;
> >>>>>> }
> >>>>>> }
> >>>>>> ///
> >>>>>> return null;
> >>>>>> }
> >>>>>>
> >>>>>> /*----------------------- MOUSE MOVEMENT
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MOUSE MOVEMENT
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MOUSE MOVEMENT
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MOUSE MOVEMENT
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MOUSE MOVEMENT
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- MOUSE MOVEMENT
> >>>>>> -----------------------*/
> >>>>>>
> >>>>>> private function mouseWheel(event:MouseEvent):void{
> >>>>>> ///
> >>>>>> camera.moveForward(10 * event.delta);
> >>>>>> }
> >>>>>> private function
> >>>>>> mouseMoving(event:MouseEvent):void{
> >>>>>> ///
> >>>>>> var differenceX:Number = event.stageX -
> >>>>>> previousMouseX;
> >>>>>> var differenceY:Number = event.stageY -
> >>>>>> previousMouseY;
> >>>>>> ///
> >>>>>> cameraPitch += differenceY;
> >>>>>> cameraYaw += differenceX;
> >>>>>> ///
> >>>>>> previousMouseX = event.stageX;
> >>>>>> previousMouseY = event.stageY;
> >>>>>> }
> >>>>>>
> >>>>>> /*----------------------- ON ENTER FRAME
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- ON ENTER FRAME
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- ON ENTER FRAME
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- ON ENTER FRAME
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- ON ENTER FRAME
> >>>>>> -----------------------*/
> >>>>>> /*----------------------- ON ENTER FRAME
> >>>>>> -----------------------*/
> >>>>>>
> >>>>>> private function procesarFrame(e:Event):void{
> >>>>>> ///
> >>>>>> // MOUSE MOVEMENT
> >>>>>> ///
> >>>>>> cameraPitch %= 360;
> >>>>>> cameraYaw %= 360;
> >>>>>> ///
> >>>>>> cameraPitch = cameraPitch > 0 ? cameraPitch :
> >>>>>> 0.0001;
> >>>>>> cameraPitch = cameraPitch < 90 ? cameraPitch :
> >>>>>> 89.9999;
> >>>>>> ///
> >>>>>> camera.orbit(cameraPitch, cameraYaw);
> >>>>>> ///
> >>>>>> // LIGHT MOVEMENT
> >>>>>> ///
> >>>>>> light.x = (mouseX - 275) * 5;
> >>>>>> light.y = (mouseY - 200) * -5;
> >>>>>> ///
> >>>>>> // PROCESS SCENE
> >>>>>> ///
> >>>>>> renderer.renderScene(scene, camera, viewport);
> >>>>>> }
> >>>>>> }
> >>>>>> }
> >>>>>>
> >>>>>> ------------------------
> >>>>>>
> >>>>>> On Tue, Jul 14, 2009 at 4:24 PM, Buti <butilon at gmail.com
> >>>>>> <mailto:butilon at gmail.com>> wrote:
> >>>>>>
> >>>>>> it's a function inside obj. It is an example.
> >>>>>>
> >>>>>>
> >>>>>> Javier España | javierespana.com
> >>>>>> <http://javierespana.com> wrote:
> >>>>>>
> >>>>>> But what does that rollover() function do?
> >>>>>>
> >>>>>> On Tue, Jul 14, 2009 at 3:46 PM, Buti
> >>>>>> <butilon at gmail.com <mailto:butilon at gmail.com>
> >>>>>> <mailto:butilon at gmail.com
> >>>>>> <mailto:butilon at gmail.com>>> wrote:
> >>>>>>
> >>>>>> I use this function. Don't remember where I got
> >>>>>> it.
> >>>>>>
> >>>>>> protected function getMaterial(donde:*):MovieClip{
> >>>>>> var mat:MovieMaterial = donde.material as
> >>>>>> MovieMaterial;
> >>>>>> if( mat ){
> >>>>>> // cast as our sub class, then test for
> >>>>>> null
> >>>>>> var mov:MovieClip = mat.movie as
> >>>>>> MovieClip;
> >>>>>> if( mov ){
> >>>>>> // now you’re talking to
> >>>>>> the instance directly
> >>>>>> return mov;
> >>>>>> }
> >>>>>> }
> >>>>>> return null;
> >>>>>> }
> >>>>>>
> >>>>>> var obj:*= getMaterial(plane as displayObject3D);
> >>>>>> obj.rollover();
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Javier España | javierespana.com
> >>>>>> <http://javierespana.com> <http://javierespana.com>
> >>>>>>
> >>>>>> wrote:
> >>>>>>
> >>>>>> Hi there,
> >>>>>>
> >>>>>> I have managed to create a Plane with a
> >>>>>> material that is a
> >>>>>> running movieClip with 8 frames. The thing is
> >>>>>> that I want to be
> >>>>>> able to play and stop that movieClip that's
> >>>>>> acting as the
> >>>>>> material of the Plane but can't seem to get to
> >>>>>> it...
> >>>>>>
> >>>>>> Here's how I load it:
> >>>>>>
> >>>>>> movieAssetMaterial = new
> >>>>>> MovieAssetMaterial("walkingTest", true);
> >>>>>> movieAssetMaterial.animated = true;
> >>>>>> movieAssetMaterial.doubleSided = true;
> >>>>>> movieAssetMaterial.interactive = true;
> >>>>>>
> >>>>>> walkingDoll = new Plane(movieAssetMaterial,
> >>>>>> 600, 600, 3, 3);
> >>>>>> scene.addChild(walkingDoll);
> >>>>>>
> >>>>>> That movieClip called "walkingTest" that I'm
> >>>>>> using as the
> >>>>>> material, has another movieClip inside it
> >>>>>> called animatedDoll
> >>>>>> that is the one I need to play and stop. Any
> >>>>>> help on how to
> >>>>>> reach it? If I use:
> >>>>>>
> >>>>>> walkingTest.animatedDoll.stop();
> >>>>>>
> >>>>>> I get an error...
> >>>>>>
> >>>>>> Thanks a lot,
> >>>>>>
> >>>>>> Javier
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ------------------------------------------------------------------------
> >>>>>>
> >>>>>>
> _______________________________________________
> >>>>>> Papervision3D mailing list
> >>>>>> Papervision3D at osflash.org
> >>>>>> <mailto:Papervision3D at osflash.org>
> >>>>>> <mailto:Papervision3D at osflash.org
> >>>>>> <mailto:Papervision3D at osflash.org>>
> >>>>>>
> >>>>>>
> >>>>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> Papervision3D mailing list
> >>>>>> Papervision3D at osflash.org
> >>>>>> <mailto:Papervision3D at osflash.org>
> >>>>>> <mailto:Papervision3D at osflash.org
> >>>>>> <mailto:Papervision3D at osflash.org>>
> >>>>>>
> >>>>>>
> >>>>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ------------------------------------------------------------------------
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> Papervision3D mailing list
> >>>>>> Papervision3D at osflash.org
> >>>>>> <mailto:Papervision3D at osflash.org>
> >>>>>>
> >>>>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> Papervision3D mailing list
> >>>>>> Papervision3D at osflash.org
> >>>>>> <mailto:Papervision3D at osflash.org>
> >>>>>>
> >>>>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ------------------------------------------------------------------------
> >>>>>> _______________________________________________ Papervision3D
> >>>>>> mailing list Papervision3D at osflash.org
> >>>>>> <mailto:Papervision3D at osflash.org>
> >>>>>>
> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> Papervision3D mailing list
> >>>>> Papervision3D at osflash.org <mailto:Papervision3D at osflash.org>
> >>>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> ------------------------------------------------------------------------
> >>>>>
> >>>>> _______________________________________________
> >>>>> Papervision3D mailing list
> >>>>> Papervision3D at osflash.org
> >>>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Papervision3D mailing list
> >>>> Papervision3D at osflash.org
> >>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>>>
> >>>>
> >>>
> >>
> >> _______________________________________________
> >> Papervision3D mailing list
> >> Papervision3D at osflash.org
> >> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >>
> >>
> >
> >
> > -----
> > ===============================================
> > Check out my blog for Flash, AS3, and web development stuff:
> > http://www.wastedpotential.com
> > --
> > View this message in context:
> >
> http://www.nabble.com/movieAssetMaterial-play-and-stop-tp24485566p24516641.html
> > Sent from the Papervision3D mailing list archive at Nabble.com.
> >
> >
> > _______________________________________________
> > Papervision3D mailing list
> > Papervision3D at osflash.org
> > http://osflash.org/mailman/listinfo/papervision3d_osflash.org
> >
>
>
>
> _______________________________________________
> Papervision3D mailing list
> Papervision3D at osflash.org
> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://osflash.org/pipermail/papervision3d_osflash.org/attachments/20090716/c6afebca/attachment-0001.html>
More information about the Papervision3D
mailing list