Papervision3D x tweensy
それでは,
以下に,
コードは以下のとおりです。
1. // forked from mash's papervision3d light and a flatshadedcube
2. // forked from mash's papervision3d simple example (cube)
3. package {
4. import flash.display.*;
5. import flash.events.*;
6.
7. import org.papervision3d.cameras.Camera3D;
8. import org.papervision3d.events.InteractiveScene3DEvent;
9. import org.papervision3d.materials.*;
10. import org.papervision3d.objects.*;
11. import org.papervision3d.objects.primitives.Cube;
12. import org.papervision3d.render.BasicRenderEngine;
13. import org.papervision3d.scenes.Scene3D;
14. import org.papervision3d.materials.utils.MaterialsList;
15. import org.papervision3d.view.Viewport3D;
16. import org.papervision3d.lights.PointLight3D;
17. import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
18.
19. import com.flashdynamix.motion.Tweensy;
20.
21. public class PV3D_01 extends Sprite {
22. private var camera :Camera3D;
23. private var scene :Scene3D;
24. private var viewport :Viewport3D;
25. private var renderer :BasicRenderEngine;
26.
27. private var cube :Cube;
28.
29. public function PV3D_01() {
30. camera = new Camera3D();
31. camera.x = 0;
32. camera.y = 0;
33. camera.z = -1000;
34.
35. scene = new Scene3D();
36. viewport = new Viewport3D( stage.stageWidth, stage.stageHeight, false, true );
37. renderer = new BasicRenderEngine();
38. addChild( viewport );
39.
40. var light:PointLight3D = new PointLight3D(false);
41. light.x = 0;
42. light.y = 0;
43. light.z = -1000;
44.
45. var material :FlatShadeMaterial = new FlatShadeMaterial(light, 0xD7261C );
46. material.interactive = true;
47.
48. var materials :MaterialsList = new MaterialsList( { all : material } );
49. cube = new Cube( materials );
50. cube.x = 0;
51. cube.y = 0;
52. cube.z = 0;
53. cube.addEventListener( InteractiveScene3DEvent.OBJECT_CLICK, function(e :InteractiveScene3DEvent) :void {
54. Tweensy.to( camera, { z :camera.z+100 }, 0.3, null, 0, null, function() :void {
55. Tweensy.to( camera, { z: -1000 }, 0.3 );
56. });
57. });
58. scene.addChild( cube );
59.
60. addEventListener( Event.ENTER_FRAME, onEnterFrame );
61. }
62.
63. public function onEnterFrame(e:Event): void {
64. cube.rotationX += ( mouseX - stage.stageWidth /2 ) / 200;
65. cube.rotationY += ( mouseY - stage.stageHeight/2 ) / 200;
66.
67. renderer.renderScene( scene, camera, viewport );
68. }
69. }
70. }
Papervision3Dの3Dの世界で,
- 36行目:Viewport3Dの第四引数interactiveをtrueに
- 45~48行目:materialのinteractiveをtrueに
これらを設定して,
cube.addEventListener( InteractiveScene3DEvent.OBJECT_CLICK, Function )
クリックイベントのハンドラでは,
まとめ
さて4回を通して,
今回ご紹介できなかったFlashの機能も,
wonderflのFlash開発者達が生み出すコードは,
以上,
wonderflをつかって試してみたいことがありましたら,
最後までお読みいただき,