Salut,

je suis un gros n00b en flash.

j'essaie de réaliser l'exemple "FireSphere" : http://www.actionscriptarchitect.com...e-with-source/

J'ai donc créé un projet Flash AS3 vide,
j'importe le package (cf ci dessous) de FireSphere et j'instancie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var test:FireSphere = new FireSphere();
J'obtiens une série d'erreurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
sur tous les appels à "stage", et notamment ces lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
		private var sceneContainer: Sprite = new Sprite;
this.sceneContainer.x = this.stage.width / 2;
			this.sceneContainer.y = this.stage.height / 2;
Je sais que le code de cet exemple n'a pas été fait pour CS3 (antérieur), j'ai donc dû adapter quelques lignes, mais là je bloque.

Stage est bien une classe CS3, width et height sont les bonnes dénominations (originalement : stageWidth et stageHeight dans ce code)
http://livedocs.adobe.com/flash/9.0_...=00002146.html

Y a t il du changement sur l'utilisation de Stage.class ou est ce que j'utilise mal l'appel à stage ?

Merci.

PS : instancier FireSphere suffira t il ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/*
 * ---------------------------
 * Paul Spitzer (c)
 * ---------------------------
 */
package
{
	//Flash
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.* ;
	//import flash.display.BitmapData;
	//import flash.display.Bitmap;
	//import flash.display.BitmapDataChannel;
	import flash.geom.Point;
	import flash.filters.DisplacementMapFilter;
	import flash.filters.DisplacementMapFilterMode;
	import flash.geom.Rectangle;
 
	//PaperVision3D
	import spitzer.core.Application;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.objects.parsers.Collada;// ??
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.view.Viewport3D;
 
	//
	[SWF(backgroundColor="#000000", frameRate="30")]
 
	/**
	 * Application class for the Fire Sphere demo
	 */
	public class FireSphere extends Application
	{
 
		// The fire texture
 
		private var noise: BitmapData;
		private var fireTexture: BitmapData;
		private var texture: BitmapData;
		private var material: BitmapMaterial;
		private var octavesLen: Number = 2;
		private var octaves: Array;
		private var seed: Number = Math.random() * 100;
		private var displacementFilter: DisplacementMapFilter;
		private var filterRect: Rectangle;
		private var filterPoint: Point;
		private var channel: Number = BitmapDataChannel.RED | BitmapDataChannel.GREEN | BitmapDataChannel.BLUE | BitmapDataChannel.ALPHA;
 
		// PV3D members
 
		private var camera: Camera3D;
		private var scene: Scene3D;
		private var sceneContainer: Sprite;
		private var sphere: Collada;
		private var xRotContainer: DisplayObject3D;
		//rajout
		private var _renderer:BasicRenderEngine;
		private var _viewport:Viewport3D;
 
 
		/**
		 * Application constructor
		 */
		public function FireSphere()
		{
			this.configureTexture();
			this.configureScene();
			this.configureListeners();
		}
 
		// Initialization
 
		/**
		 * Create the necessary pieces to render the fire texture
		 */
		private function configureTexture(): void
		{
			this.fireTexture = new FireTexture( 400, 200 );
 
			var w: Number = 100;//this.fireTexture.width;
			var h: Number = 100;//this.fireTexture.height;
 
			this.noise = new BitmapData(w, h, true, 0x00000000);
			this.texture = new BitmapData(w, h, true, 0xffffffff);
 
			//BitmapMaterial.AUTO_MIP_MAPPING = false;
			this.material = new BitmapMaterial(this.texture);
			this.material.oneSide = false;
 
			this.octaves = new Array();
			for(var i: uint = 0; i < this.octavesLen; i++)
			{
				this.octaves.push(new Point(0, 0));
			}
 
			this.filterRect = new Rectangle(0, 0, w, h);
			this.filterPoint = new Point(0, 0);
 
			var mapPoint: Point = new Point(0, 0);
			var componentX: Number = BitmapDataChannel.ALPHA;
			var componentY: Number = BitmapDataChannel.ALPHA;
			var scaleX: Number = 50;
			var scaleY: Number = 150;
			var mode: String = DisplacementMapFilterMode.IGNORE;
			var color: Number = 0x00FFFFFF;
			var alpha: Number = 0x00000000;
			this.displacementFilter = new DisplacementMapFilter(this.noise, mapPoint, componentX, componentY, scaleX, scaleY, mode, color, alpha);
		}
 
		/**
		 * Configures the PV3D scene and associated objects
		 */
		private function configureScene(): void
		{
			this.camera = new Camera3D();
			this.camera.z = -650;
 
			this.sceneContainer = new Sprite();
			this.sceneContainer.x = this.stage.width / 2;
			this.sceneContainer.y = this.stage.height / 2;
			this.addChild(this.sceneContainer);
 
			var materialsList: MaterialsList = new MaterialsList();
			materialsList.addMaterial(this.material, "Fire");
			this.sphere = new Collada("Sphere.dae", materialsList);
 
			this.scene = new Scene3D();
			this.xRotContainer = new DisplayObject3D();
			this.xRotContainer.addChild(this.sphere);
			this.scene.addChild(this.xRotContainer);
 
			//render - ajout
			//this._renderer = new BasicRenderEngine();
			//this._viewport = new Viewport3D(stage.stageWidth, stage.stageHeight, true, true);
 
		}
 
		/**
		 * Configures the necessary listeners
		 */
		private function configureListeners(): void
		{
			this.addEventListener(Event.ENTER_FRAME, this.handleEnterFrame);
			this.stage.addEventListener(Event.RESIZE, this.handleResize);
		}
 
		// Event Handlers
 
		/**
		 * Handles the enter frame event
		 */
		private function handleEnterFrame(event: Event): void
		{
			// Update material
			var point: Point;
			for(var i: uint = 0; i < this.octavesLen; i++)
			{
				point = this.octaves[i] as Point;
				point.y += 3;
			}
 
			this.noise.perlinNoise(15, 15, this.octavesLen, this.seed, true, true, this.channel, false, this.octaves);
			this.texture.applyFilter(this.fireTexture, this.filterRect, this.filterPoint, this.displacementFilter);			
 
			// Rotation
			this.sphere.rotationY = -this.mouseX / this.stage.stageWidth * 540;
			this.xRotContainer.rotationX = (this.mouseY / this.stage.stageHeight * 90) - 45;
 
			// Render
//			this.scene.renderCamera(this.camera);
 
 //   	    private function render($evt:Event):void
		    this._renderer.renderScene(this.scene, this.camera, this._viewport);
 
		}
 
		/**
		 * Handles the resize event from the stage and 
		 * repositions the scene container.
		 */
		private function handleResize(event: Event): void
		{
			this.sceneContainer.x = this.stage.stageWidth / 2;
			this.sceneContainer.y = this.stage.stageHeight / 2;
		}
 
	}
}