ActionScript - cómo llamar a dos .as desde un archivo .fla

   
Vista:

cómo llamar a dos .as desde un archivo .fla

Publicado por Patricia (1 intervención) el 25/02/2013 16:28:43
Buenos días, os quería pedir ayuda con una cosa para un trabajo para la universidad, lo primero pedir perdón porque estoy muy verde en el tema y a lo mejor no uso bien todos los términos. He intentado primero encontrar lo que necesito en google pero nada.

He descargado de unos tutoriales para hacer realidad aumentada los códigos, y se trata de un archivo flash Eart.fla unido a uno de actionscript Earth.as, que compilo en el swf y todo funciona bien. Por otro lado tengo otro para poder hacer fotos con flash y que se suban al servidor, tambien con su archivo Webcam.fla y su Webcam.as. Cada uno por separado funciona.

La cosa es que quiero combinar ambos códigos para que funcione a la vez la realiadad aumentada y el hacer la foto, pero nose como combinarlos. No entiendo casi de programación en .as pero he leido que tiene que ir cada uno en .as porque son clases diferentes, pero ¿cómo hago para que desde un solo fla (luego swf) llame a los dos archivos .as?

Os pongo los códigos por si ayuda:

Earth.as
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
package {
 
	import flash.events.Event;
	import Earth;
	import org.papervision3d.objects.parsers.DAE;
 
	public class Earth extends PV3DARApp {
 
		private var _earth:DAE;
 
		public function Earth() {
			this.init('Data/camera_para.dat', 'Data/flarlogo.pat');
		}
 
		protected override function onInit():void {
			super.onInit();
 
			this._earth = new DAE();
			this._earth.load('model/Nevermore.dae');
			this._earth.scale = 5;
			this._earth.rotationX = -90;
			this._baseNode.addChild(this._earth);
 
			this.addEventListener(Event.ENTER_FRAME, this._update);
		}
 
		private function _update(e:Event):void {
			this._earth.rotationZ += 0.5
		}
	}
}



Webcam.as
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
package {
 
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
    import flash.events.*;
	import flash.utils.*;
    import flash.media.Camera;
    import flash.media.Video;
	import flash.external.ExternalInterface;
	import flash.net.*;
	import flash.system.Security;
    import flash.system.SecurityPanel;
	import flash.media.Sound;
    import flash.media.SoundChannel;
	import flash.geom.Matrix;
	import com.adobe.images.JPGEncoder;
 
 
    public class Webcam extends Sprite {
        private var video:Video;
		private var encoder:JPGEncoder;
		private var snd:Sound;
		private var channel:SoundChannel = new SoundChannel();
		private var jpeg_quality:int;
		private var video_width:int;
		private var video_height:int;
		private var server_width:int;
		private var server_height:int;
		private var camera:Camera;
		private var bmp:Bitmap;
		private var bmpdata:BitmapData;
		private var url:String;
		private var stealth:int;
 
        public function Webcam() {
			// class constructor
			flash.system.Security.allowDomain("*");
			var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters;
			video_width = Math.floor( flashvars.width );
			video_height = Math.floor( flashvars.height );
			server_width = Math.floor( flashvars.server_width );
			server_height = Math.floor( flashvars.server_height );
 
            stage.scaleMode = StageScaleMode.NO_SCALE;
			// stage.scaleMode = StageScaleMode.EXACT_FIT;
            stage.align = StageAlign.TOP_LEFT;
			stage.stageWidth = Math.max(video_width, server_width);
			stage.stageHeight = Math.max(video_height, server_height);
 
			// Hack to auto-select iSight camera on Mac (JPEGCam Issue #5, submitted by manuel.gonzalez.noriega)
			// From: http://www.squidder.com/2009/03/09/trick-auto-select-mac-isight-in-flash/
			var cameraIdx:int = -1;
			for (var idx = 0, len = Camera.names.length; idx < len; idx++) {
				if (Camera.names[idx] == "USB Video Class Video") {
					cameraIdx = idx;
					idx = len;
				}
			}
            if (cameraIdx > -1) camera = Camera.getCamera( String(cameraIdx) );
            else camera = Camera.getCamera();
 
            if (camera != null) {
                camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                video = new Video( Math.max(video_width, server_width), Math.max(video_height, server_height) );
                video.attachCamera(camera);
                addChild(video);
 
				if ((video_width < server_width) && (video_height < server_height)) {
					video.scaleX = video_width / server_width;
					video.scaleY = video_height / server_height;
				}
 
				camera.setQuality(0, 100);
				camera.setKeyFrameInterval(10);
				camera.setMode( Math.max(video_width, server_width), Math.max(video_height, server_height), 30);
 
				// do not detect motion (may help reduce CPU usage)
				camera.setMotionLevel( 100 );
 
				ExternalInterface.addCallback('_snap', snap);
				ExternalInterface.addCallback('_configure', configure);
				ExternalInterface.addCallback('_upload', upload);
				ExternalInterface.addCallback('_reset', reset);
 
				if (flashvars.shutter_enabled == 1) {
					snd = new Sound();
					snd.load( new URLRequest( flashvars.shutter_url ) );
				}
 
				jpeg_quality = 90;
 
				ExternalInterface.call('webcam.flash_notify', 'flashLoadComplete', true);
            }
			else {
                trace("You need a camera.");
				ExternalInterface.call('webcam.flash_notify', "error", "No camera was detected.");
            }
        }
 
		public function set_quality(new_quality:int) {
			// set JPEG image quality
			if (new_quality < 0) new_quality = 0;
			if (new_quality > 100) new_quality = 100;
			jpeg_quality = new_quality;
		}
 
		public function configure(panel:String = SecurityPanel.CAMERA) {
			// show configure dialog inside flash movie
			Security.showSettings(panel);
		}
 
        private function activityHandler(event:ActivityEvent):void {
            trace("activityHandler: " + event);
        }
 
		public function snap(url, new_quality, shutter, new_stealth = 0) {
			// take snapshot from camera, and upload if URL was provided
			if (new_quality) set_quality(new_quality);
			stealth = new_stealth;
			trace("in snap(), drawing to bitmap");
 
			if (shutter) {
				channel = snd.play();
				setTimeout( snap2, 10, url );
			}
			else snap2(url);
		}
 
		public function snap2(url) {
			// take snapshot, convert to jpeg, submit to server
			bmpdata = new BitmapData( Math.max(video_width, server_width), Math.max(video_height, server_height) );
			bmpdata.draw( video );
 
			if (!stealth) {
				// draw snapshot on stage
				bmp = new Bitmap( bmpdata );
				addChild( bmp );
 
				// stop capturing video
				video.attachCamera( null );
				removeChild( video );
			}
 
			// if URL was provided, upload now
			if (url) upload( url );
		}
 
		public function upload(url) {
			if (bmpdata) {
				if ((video_width > server_width) && (video_height > server_height)) {
					// resize image downward before submitting
					var tmpdata = new BitmapData(server_width, server_height);
 
					var matrix = new Matrix();
					matrix.scale( server_width / video_width, server_height / video_height );
 
					tmpdata.draw( bmpdata, matrix, null, null, null, true ); // smoothing
					bmpdata = tmpdata;
				} // need resize
 
				trace("converting to jpeg");
 
				var ba:ByteArray;
 
				encoder = new JPGEncoder( jpeg_quality );
				ba = encoder.encode( bmpdata );
 
				trace("jpeg length: " + ba.length);
 
				var head:URLRequestHeader = new URLRequestHeader("Accept","text/*");
				var req:URLRequest = new URLRequest( url );
				req.requestHeaders.push(head);
 
				req.data = ba;
				req.method = URLRequestMethod.POST;
				req.contentType = "image/jpeg";
 
				var loader:URLLoader = new URLLoader();
				loader.addEventListener(Event.COMPLETE, onLoaded);
 
				trace("sending post to: " + url);
 
				try {
					loader.load(req);
				}
				catch (error:Error) {
					trace("Unable to load requested document.");
					ExternalInterface.call('webcam.flash_notify', "error", "Unable to post data: " + error);
				}
			}
			else {
				ExternalInterface.call('webcam.flash_notify', "error", "Nothing to upload, must capture an image first.");
			}
		}
 
		public function onLoaded(evt:Event):void {
			// image upload complete
			var msg = "unknown";
			if (evt && evt.target && evt.target.data) msg = evt.target.data;
			ExternalInterface.call('webcam.flash_notify', "success", msg);
		}
 
		public function reset() {
			// reset video after taking snapshot
			if (bmp) {
				removeChild( bmp );
				bmp = null;
				bmpdata = null;
 
				video.attachCamera(camera);
            	addChild(video);
			}
		}
    }
}


Nose si me he explicado bien... lo que necesito es que desde un solo .swf me funcionen los dos códigos. Cualquier duda preguntadme, y mil gracias por vuestra ayuda =)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder