﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-gembin-随笔分类-ActionScript3</title><link>http://www.blogjava.net/gembin/category/33694.html</link><description>&lt;font color="red"&gt;OSGi, Eclipse Equinox, ECF, Virgo, Gemini,  Apache Felix, Karaf, Aires, Camel, Eclipse RCP&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;
&lt;font color="green"&gt;HBase, Hadoop, ZooKeeper, Cassandra&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;

&lt;font color="blue"&gt;Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;
&lt;font color="black"&gt;
There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.&lt;/font&gt;
&lt;br/&gt;&lt;br/&gt;

&lt;a href="http://about.me/gembin"&gt;About Me&lt;/a&gt;

&lt;script type="text/javascript" src="http://platform.linkedin.com/in.js"&gt;&lt;/script&gt;&lt;script type="in/share" data-counter="right"&gt;&lt;/script&gt;

</description><language>zh-cn</language><lastBuildDate>Sat, 21 Jul 2012 20:48:27 GMT</lastBuildDate><pubDate>Sat, 21 Jul 2012 20:48:27 GMT</pubDate><ttl>60</ttl><item><title>Flash 3d Sokoban Prototype With Alternativa3d</title><link>http://www.blogjava.net/gembin/archive/2012/07/21/383679.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Sat, 21 Jul 2012 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2012/07/21/383679.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/383679.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2012/07/21/383679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/383679.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/383679.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Emanuele Feronato&nbsp;italian geek and PROgrammer prepared two great blog posts with Sokoban game prototype. As all of his examples Sokoban prototypes have good code and can be clearly understood.Her...&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2012/07/21/383679.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/383679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2012-07-21 23:03 <a href="http://www.blogjava.net/gembin/archive/2012/07/21/383679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash 3d Sokoban Prototype With Alternativa3d Textured Version</title><link>http://www.blogjava.net/gembin/archive/2012/07/21/383678.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Sat, 21 Jul 2012 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2012/07/21/383678.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/383678.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2012/07/21/383678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/383678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/383678.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Emanuele Feronato added textures and some environment to&nbsp;Sokoban game prototype made with Flare3D.I reproduced this prototype on Alternativa3D engine. And here you can find it:Generally this port...&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2012/07/21/383678.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/383678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2012-07-21 23:00 <a href="http://www.blogjava.net/gembin/archive/2012/07/21/383678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash 3d Sokoban Prototype With Alternativa3d Textured Version</title><link>http://www.blogjava.net/gembin/archive/2012/07/21/383677.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Sat, 21 Jul 2012 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2012/07/21/383677.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/383677.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2012/07/21/383677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/383677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/383677.html</trackback:ping><description><![CDATA[<p style="margin: 0px 0px 10px; padding: 0px; border: 0px; outline: 0px; font-size: 12px; font-family: Arial, sans-serif; vertical-align: baseline; line-height: 28px; color: #555555; ">Emanuele Feronato added textures and some environment to&nbsp;<a href="http://www.emanueleferonato.com/2011/02/25/flash-3d-sokoban-prototype-with-flare3d-final-version/" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-weight: bold; font-style: inherit; font-family: inherit; vertical-align: baseline; color: #059bff; text-decoration: none; ">Sokoban game prototype made with Flare3D</a>.</p><p style="margin: 0px 0px 10px; padding: 0px; border: 0px; outline: 0px; font-size: 12px; font-family: Arial, sans-serif; vertical-align: baseline; line-height: 28px; color: #555555; ">I reproduced this prototype on Alternativa3D engine. And here you can find it:<br style="margin: 0px; padding: 0px; " /></p><object type="application/x-shockwave-flash" data="http://inspiritgames.com/blog/wp-content/uploads/Alternativa3dSokobanTextured.swf" width="640" height="480" id="swf58db1" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 12px; font-family: Arial, sans-serif; vertical-align: baseline; visibility: visible; color: #444444; line-height: normal; "></object><p style="margin: 0px 0px 10px; padding: 0px; border: 0px; outline: 0px; font-size: 12px; font-family: Arial, sans-serif; vertical-align: baseline; line-height: 28px; color: #555555; "></p><p style="margin: 0px 0px 10px; padding: 0px; border: 0px; outline: 0px; font-size: 12px; font-family: Arial, sans-serif; vertical-align: baseline; line-height: 28px; color: #555555; ">Generally this port is bit different from Emanuele&#8217;s version. I can&#8217;t find information about feature like SkyBox in Alternativa3D, so this feature coded manually. Another difference is camera behavior. Emanuele binds camera to object and during rotations player object stand still and only camera fly around by its orbit. In Alternativa3d version object rotates too, this allow us to face player object it to it&#8217;s current direction. Camera is not binded to the object directly it is binded to object container and we can manipulate with player object in container, add animations, rotations etc. But both variants are good I think.</p><p style="margin: 0px 0px 10px; padding: 0px; border: 0px; outline: 0px; font-size: 12px; font-family: Arial, sans-serif; vertical-align: baseline; line-height: 28px; color: #555555; "><br style="margin: 0px; padding: 0px; " />Here is source code:</p><pre as3;="" auto-links:=""  false;"="" style="margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; font-family: inherit; vertical-align: baseline; color: #444444; line-height: normal; ">package  { 	import alternativa.Alternativa3D; 	import alternativa.engine3d.containers.*; 	import alternativa.engine3d.controllers.*; 	import alternativa.engine3d.core.Camera3D; 	import alternativa.engine3d.core.Clipping; 	import alternativa.engine3d.core.Debug; 	import alternativa.engine3d.core.MipMapping; 	import alternativa.engine3d.core.MouseEvent3D; 	import alternativa.engine3d.core.Object3D; 	import alternativa.engine3d.core.Object3DContainer; 	import alternativa.engine3d.core.Sorting; 	import alternativa.engine3d.core.View; 	import alternativa.engine3d.materials.FillMaterial; 	import alternativa.engine3d.materials.TextureMaterial; 	import alternativa.engine3d.objects.Sprite3D; 	import alternativa.engine3d.primitives.Box; 	import alternativa.engine3d.primitives.Plane; 	import alternativa.engine3d.primitives.Sphere; 	 	import flash.display.BitmapData; 	import flash.display.BlendMode; 	import flash.display.Sprite; 	import flash.display.StageAlign; 	import flash.display.StageQuality; 	import flash.display.StageScaleMode; 	import flash.events.Event; 	import flash.events.KeyboardEvent; 	import flash.filters.GlowFilter; 	import flash.geom.ColorTransform; 	import flash.geom.Vector3D; 	import flash.sampler.NewObjectSample; 	import flash.system.Capabilities; 	import flash.ui.Keyboard; 		 	[SWF(backgroundColor="#000000", frameRate="100", width="640", height="480")] 	public class alternativa3dSokoban extends Sprite  	{ 		private const CUBESIZE:Number=10; 		//embeding textures images 		[Embed(source="resource/crateTextureImg.jpg")] static private const crateTextureImg:Class; 		[Embed(source="resource/floorTextureImg.png")] static private const floorTextureImg:Class; 		[Embed(source="resource/crateTopTextureImg.jpg")] static private const crateTopTextureImg:Class; 		[Embed(source="resource/crateTopGoalTextureImg.jpg")] static private const crateTopGoalTextureImg:Class; 		[Embed(source="resource/wallTextureImg.png")] static private const wallTextureImg:Class; 		[Embed(source="resource/goalTextureImg.jpg")] static private const goalTextureImg:Class; 		[Embed(source="resource/playerTextureImg.jpg")] static private const playerTextureImg:Class; 		[Embed(source="resource/backBitmapImg.jpg")] static private const backTextureImg:Class; 		[Embed(source="resource/backBottomBitmapImg.jpg")] static private const backBottomTextureImg:Class;  		// sokobal demo level and player position 		private var levels:Array=[[1,1,1,1,0,0,0,0],[1,0,0,1,1,1,1,1],[1,0,2,0,0,3,0,1],[1,0,3,0,0,2,4,1],[1,1,1,0,0,1,1,1],[0,0,1,1,1,1,0,0]]; 		private var playerCol:uint; 		private var playerRow:uint; 		private var playerRotation:Number=0; 		private var playerAngle:Number=0; 		private var playerMovement:Number=0; 		private var dRow:int; 		private var dCol:int; 		 		// alternativa3d  engine variables 		private var camera:Camera3D; 		private var controller:SimpleObjectController; 		private var container:ConflictContainer;			 		private var frame:Sprite = new Sprite(); 		public var player:Sphere;// Sphere primitive representing the player 		public var cplayer:SimpleObjectController; //controller for player object 		public var conplayer:Object3DContainer; //container for player 		private var movingCrate:Box;// cube primitive representing the moving crate		 			 		// textures		 		private var crateTexture:TextureMaterial = new TextureMaterial(new crateTextureImg().bitmapData); 		private var floorTexture:TextureMaterial = new TextureMaterial(new floorTextureImg().bitmapData); 		private var crateTopTexture:TextureMaterial = new TextureMaterial(new crateTopTextureImg().bitmapData); 		private var crateTopGoalTexture:TextureMaterial = new TextureMaterial(new crateTopGoalTextureImg().bitmapData); 		private var wallTexture:TextureMaterial = new TextureMaterial(new wallTextureImg().bitmapData); 		private var goalTexture:TextureMaterial = new TextureMaterial(new goalTextureImg().bitmapData); 		private var playerTexture:TextureMaterial = new TextureMaterial(new playerTextureImg().bitmapData); 		// SkyBox textures 		private var backTexture:TextureMaterial = new TextureMaterial(new backTextureImg().bitmapData); 		private var backBottomTexture:TextureMaterial = new TextureMaterial(new backBottomTextureImg().bitmapData); 						 		public function alternativa3dSokoban()  		{			 			stage.scaleMode = StageScaleMode.NO_SCALE; 			stage.align = StageAlign.TOP_LEFT; 			stage.quality = StageQuality.BEST; 			 			// Camera 			camera = new Camera3D(); 			camera.view = new View(640, 480); 			addChild(camera.view); 						 			// Camera controller 			controller = new SimpleObjectController(stage, camera, 200, 3); 			 			// Root object 			container = new ConflictContainer(); 			container.resolveByAABB = true; 			container.resolveByOOBB = true; 			 			//Player controller 			conplayer = new Object3DContainer(); 			cplayer = new SimpleObjectController(stage, player, 3); 			 //i am not shure about SkyBox in Alternativa and will prepare it manually 			var backBottom:Plane = new Plane(200*CUBESIZE/2,200*CUBESIZE/2); 			backBottom.setMaterialToAllFaces(backBottomTexture); 			backBottom.x = 0; 			backBottom.y = -100*CUBESIZE/2; 			backBottom.z = 0; 			backBottom.rotationX = 90*Math.PI/180; 			container.addChild(backBottom); 			 			var backLeft:Plane = new Plane(200*CUBESIZE/2,200*CUBESIZE/2); 			backLeft.setMaterialToAllFaces(backTexture); 			backLeft.x = 0; 			backLeft.y = 0; 			backLeft.z = 100*CUBESIZE/2; 			container.addChild(backLeft);  			var backRight:Plane = new Plane(200*CUBESIZE/2,200*CUBESIZE/2); 			backRight.setMaterialToAllFaces(backTexture); 			backRight.x = 0; 			backRight.y = 0; 			backRight.z = -100*CUBESIZE/2; 			container.addChild(backRight);  			var backFront:Plane = new Plane(200*CUBESIZE/2,200*CUBESIZE/2); 			backFront.setMaterialToAllFaces(backTexture); 			backFront.x = -100*CUBESIZE/2; 			backFront.y = 0; 			backFront.z = 0; 			backFront.rotationY = 90*Math.PI/180; 			container.addChild(backFront);  			var backBack:Plane = new Plane(200*CUBESIZE/2,200*CUBESIZE/2); 			backBack.setMaterialToAllFaces(backTexture); 			backBack.x = 100*CUBESIZE/2; 			backBack.y = 0; 			backBack.z = 0; 			backBack.rotationY = 90*Math.PI/180; 			container.addChild(backBack); // end SkyBox 			 			var box:Box; 			/* 			[[1,1,1,1,0,0,0,0], 			 [1,0,0,1,1,1,1,1], 			 [1,0,2,0,0,3,0,1], 			 [1,0,3,0,0,2,4,1], 			 [1,1,1,0,0,1,1,1], 			 [0,0,1,1,1,1,0,0]]; 			*/ 			// level construction 			for (var i:uint=0; i&lt;6; i++)  			{ 				for (var j:uint=0; j&lt;8; j++)  				{ 					switch (levels[i][j])  					{ 						case 0 : 							box = new Box(CUBESIZE,CUBESIZE/2,CUBESIZE,1,1); 							box.setMaterialToAllFaces(floorTexture); 							box.x = CUBESIZE*j; 							box.y = 0; 							box.z = CUBESIZE*i; 							container.addChild(box); 							break; 						case 1 : 							box = new Box(CUBESIZE,CUBESIZE/2,CUBESIZE,1); 							box.setMaterialToAllFaces(floorTexture); 							box.x = CUBESIZE*j; 							box.y = 0; 							box.z = CUBESIZE*i; 							container.addChild(box); 							 							box = new Box(CUBESIZE,CUBESIZE,CUBESIZE,1); 							box.setMaterialToAllFaces(wallTexture); 							box.x = CUBESIZE*j; 							box.y = CUBESIZE*3/4; 							box.z = CUBESIZE*i; 							container.addChild(box); 							break; 						case 2 : 							box = new Box(CUBESIZE,CUBESIZE/2,CUBESIZE,1); 							box.setMaterialToAllFaces(goalTexture); 							box.x = CUBESIZE*j; 							box.y = 0; 							box.z = CUBESIZE*i; 							container.addChild(box); 							break; 						case 3 : 							box = new Box(CUBESIZE,CUBESIZE/2,CUBESIZE,1); 							box.setMaterialToAllFaces(floorTexture); 							box.x = CUBESIZE*j; 							box.y = 0; 							box.z = CUBESIZE*i; 							container.addChild(box); 							box = new Box(CUBESIZE,CUBESIZE,CUBESIZE,1); 							box.name = "crate_"+i+"_"+j; 							box.setMaterialToAllFaces(crateTexture); 							box.x = CUBESIZE*j; 							box.y = CUBESIZE*3/4; 							box.z = CUBESIZE*i; 							box.rotationX -= 90*Math.PI/180; 							// top of the crate 							box.faces[4].material=crateTopTexture; 							box.faces[5].material=crateTopTexture;  							container.addChild(box); 							break; 						case 4 : 							box = new Box(CUBESIZE,CUBESIZE/2,CUBESIZE,1); 							box.setMaterialToAllFaces(floorTexture); 							box.x = CUBESIZE*j; 							box.y = 0; 							box.z = CUBESIZE*i; 							container.addChild(box); 														 							player = new Sphere(CUBESIZE/2,16,16,false,playerTexture);  							conplayer.addChild(player); 							conplayer.visible = true; 							conplayer.x = CUBESIZE*j; 							conplayer.y = CUBESIZE*3/4; 							conplayer.z = CUBESIZE*i; 							conplayer.rotationX -= 90*Math.PI/180; 							container.addChild(conplayer); 							playerCol=j; 							playerRow=i; 							break; 					} 				} 			}  			// Adding camera 			container.addChild(camera); 			 			// View frame 			addChild(frame);												 			onResize();		 			stage.addEventListener(Event.ENTER_FRAME, updateEvent);			 			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDwn);		 			stage.addEventListener(Event.RESIZE, onResize); 		}  		private function onKeyDwn(e:KeyboardEvent):void  		{ 			if (playerRotation==0&amp;&amp;playerMovement==0)  			{ 				switch (e.keyCode)  				{ 					case Keyboard.LEFT : 						playerRotation=+9; 						playerAngle+=90; 						break; 					case Keyboard.RIGHT : 						playerRotation=-9; 						playerAngle-=90; 						break; 					case Keyboard.UP : 						movingCrate=null; 						playerAngle=Math.round(conplayer.rotationY*180/Math.PI)%360; 						if (playerAngle&lt;0)  						{ 							playerAngle+=360; 						} 						// we have to determine the difference between current row and column 						// and the new row and column according to player heading 						switch (playerAngle)  						{ 							case 0 : 								dRow=0; 								dCol=-1; 								break; 							case 90 : 								//dRow=-1; 								dRow=1; 								dCol=0; 								break; 							case 180 : 								dRow=0; 								dCol=1; 								break; 							case 270 : 								//dRow=1; 								dRow=-1; 								dCol=0; 								break; 						} 						if (levels[playerRow+dRow][playerCol+dCol]==0||levels[playerRow+dRow][playerCol+dCol]==2)  						{ 							// the player can move 							playerMovement=-CUBESIZE/10; 						}  						else  						{ 							if (levels[playerRow+dRow][playerCol+dCol]==3||levels[playerRow+dRow][playerCol+dCol]==5) { 								if (levels[playerRow+2*dRow][playerCol+2*dCol]==0||levels[playerRow+2*dRow][playerCol+2*dCol]==2) { 									// the player can move and can push a crate 									movingCrate=container.getChildByName("crate_"+(playerRow+dRow)+"_"+(playerCol+dCol))as Box; 									playerMovement=-CUBESIZE/10; 								} 							} 						} 						break;  				} 			} 		}   		public function updateEvent(e:Event):void  		{		 				if (playerRotation)  				{ 					conplayer.rotationY+=playerRotation*Math.PI/180; 					 					if (Math.abs(Math.round(conplayer.rotationY*180/Math.PI))%90==0) 					{ 						playerRotation=0; 					} 				} 				 				if (playerMovement)  				{					 					switch (playerAngle)  					{ 					case 0 : 						conplayer.x += playerMovement; 						player.rotationY -= 18*Math.PI/180; 					break; 					case 90 : 						conplayer.z += -playerMovement; 						player.rotationY -= 18*Math.PI/180; 					break; 					case 180 : 						conplayer.x += -playerMovement; 						player.rotationY -= 18*Math.PI/180; 						break; 					case 270 : 						conplayer.z += playerMovement; 						player.rotationY -= 18*Math.PI/180; 						break; 					} 					 					if (movingCrate)  					{ 						switch (playerAngle)  						{ 							case 0 : 								movingCrate.x += playerMovement; 								break; 							case 90 : 								movingCrate.z += -playerMovement; 								break; 							case 180 : 								movingCrate.x += -playerMovement; 								break; 							case 270 : 								movingCrate.z += playerMovement; 								break; 						} 					}  					// we need this to know if the player stopped on the destination tile 					if ((playerAngle%180==0&amp;&amp;(Math.round(conplayer.x*10)/10)%CUBESIZE==0)||(playerAngle%180!=0&amp;&amp;(Math.round(conplayer.z*10)/10)%CUBESIZE==0))  					{ 						playerMovement=0; 						levels[playerRow+dRow][playerCol+dCol]+=4; 						levels[playerRow][playerCol]-=4; 						if (movingCrate) { 							levels[playerRow+2*dRow][playerCol+2*dCol]+=3; 							if (levels[playerRow+2*dRow][playerCol+2*dCol]==5) { 								// changing materials on the fly 								movingCrate.setMaterialToAllFaces(crateTexture); 								// top of the crate on goal 								movingCrate.faces[4].material=crateTopGoalTexture; 								movingCrate.faces[5].material=crateTopGoalTexture;								  							} 							else  							{ 								//movingCrate.setMaterialToAllFaces(crateMaterial); 								movingCrate.setMaterialToAllFaces(crateTexture); 								// top of the crate 								movingCrate.faces[4].material=crateTopTexture; 								movingCrate.faces[5].material=crateTopTexture;								 							} 							levels[playerRow+dRow][playerCol+dCol]-=3; 							movingCrate.name="crate_"+(playerRow+2*dRow)+"_"+(playerCol+2*dCol); 						} 						playerCol+=dCol; 						playerRow+=dRow; 					} 				}  				onEnterFrame(); 		}			  		public function correct_camera_angles():void 		{ 			//set camera position 			var r:Number = 10*CUBESIZE/3;			 			var a:Number = -conplayer.rotationY; 			var cx:Number = conplayer.x+Math.cos(a)*r; 			var cz:Number = conplayer.z+Math.sin(a)*r; 			var cy:Number = conplayer.y+r;			 			controller.setObjectPosXYZ(cx,cy,cz); 			 			//look at player box 			controller.lookAtXYZ(conplayer.x,conplayer.y,conplayer.z); 			 			//correct camera angles			 				var cprotY:Number; 				 				cprotY=Math.round(conplayer.rotationY*180/Math.PI)%360;			 				if (cprotY&lt;0)  				{ 					cprotY+=360; 				} 				if (cprotY&gt;180) 				{ 					camera.rotationX = camera.rotationX + (90*Math.PI/180)*Math.sin((cprotY%180)*Math.PI/180); 				}										 				camera.rotationY = camera.rotationY+90*Math.PI/180-conplayer.rotationY; 		} 		 		public function onEnterFrame(e:Event = null):void  		{ 			controller.update(); 			correct_camera_angles(); 			cplayer.update(); 			camera.render();		 		} 		  		public function onResize(e:Event = null):void  		{ 			//here you can add border size for view 			var pd:Number = 0; 			camera.view.width = stage.stageWidth - pd*2; 			camera.view.height = stage.stageHeight - pd*2; 			camera.view.x = pd; 			camera.view.y = pd; 			 			frame.graphics.clear(); 			frame.graphics.beginFill(0x000000, 0); 			frame.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); 			//frame.graphics.lineStyle(0, 0x7F7F7F); 			frame.graphics.drawRect(pd, pd, camera.view.width, camera.view.height); 			frame.graphics.endFill(); 		} 	} }</pre><p style="margin: 0px 0px 10px; padding: 0px; border: 0px; outline: 0px; font-size: 12px; font-family: Arial, sans-serif; vertical-align: baseline; line-height: 28px; color: #555555; ">Here you can&nbsp;<a href="http://inspiritgames.com/blog/wp-content/uploads/Alternativa3dSokobanTextured.zip" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-weight: bold; font-style: inherit; font-family: inherit; vertical-align: baseline; color: #059bff; text-decoration: none; ">download sources</a>.</p><img src ="http://www.blogjava.net/gembin/aggbug/383677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2012-07-21 22:58 <a href="http://www.blogjava.net/gembin/archive/2012/07/21/383677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Embedding fonts into ActionScript 3 project</title><link>http://www.blogjava.net/gembin/archive/2012/07/21/383676.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Sat, 21 Jul 2012 14:56:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2012/07/21/383676.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/383676.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2012/07/21/383676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/383676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/383676.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Operating with embedded graphics and fonts of flash application during development is significant, since unique cross-browser (and cross-platform hopefully) look is one of key RIA/flashgame features. ...&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2012/07/21/383676.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/383676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2012-07-21 22:56 <a href="http://www.blogjava.net/gembin/archive/2012/07/21/383676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Comparing the syntax of Java 5 and ActionScript 3</title><link>http://www.blogjava.net/gembin/archive/2012/07/07/382482.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Sat, 07 Jul 2012 14:44:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2012/07/07/382482.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/382482.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2012/07/07/382482.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/382482.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/382482.html</trackback:ping><description><![CDATA[<div style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: normal; text-align: left; background-color: #ffffff; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">This list is not complete, and your input is appreciated.</p><table cellspacing="0" cellpadding="0" border="1" style="border: medium none; border-collapse: collapse; "><tbody><tr><td valign="top" style="border: 1pt solid windowtext; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><strong>Concept/Language Construct</strong></p></td><td valign="top" style="border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><strong>Java 5.0</strong></p></td><td valign="top" style="border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><strong>ActionScript 3.0</strong></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Class library packaging</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">.jar</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">.swc</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Inheritance</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">class Employee extends Person{&#8230;}</span></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">class Employee extends Person{&#8230;}</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Variable declaration and initialization</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">String firstName=&#8221;John&#8221;;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Date shipDate=new Date();</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">int i;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">int a, b=10;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">double salary;</span></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var firstName:String=&#8221;John&#8221;;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var shipDate:Date=new Date();</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var i:int;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var a:int, b:int=10;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var salary:Number;</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Undeclared variables</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">n/a</span></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 9pt; font-family: Utopia; ">It&#8217;s an equivalent to the wild card type notation *. If you declare a variable but do not specify its type, the * type will apply.</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 9pt; font-family: Utopia; ">A default value:</span><span style="font-size: 10pt; ">&nbsp;undefined</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var myVar:*;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Variable scopes</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">block: declared within curly braces,<br />local: declared within a method or a block</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">member: declared on the class level</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">no global variables</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">No block scope: the minimal scope is a function</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">local: declared within a function</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">member: declared on the class level</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">If a variable is declared outside of any function or class definition, it has global scope.</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Strings</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Immutable, store sequences of two-byte Unicode characters</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Immutable, store sequences of two-byte Unicode characters</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Terminating statements with semicolons</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">A must</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">If you write one statement per line you can omit it.</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Strict equality operator</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">===</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">for strict non-equality use</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">!==</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Constant qualifier</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">The keyword final</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">final int STATE=&#8221;NY&#8221;;</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">The keyword const</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">const STATE:int =&#8221;NY&#8221;;</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Type checking</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Static (checked at compile time)</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Dynamic (checked at run-time) and static (it&#8217;s so called &#8216;strict mode&#8217;, which is default in Flex Builder)</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Type check operator</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">instanceof</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">is<span style="font-size: 10pt; ">&nbsp;&#8211; checks data type, i.e. if (myVar is String){&#8230;}</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">The is operator is a replacement of older instanceof</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">The as operator</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Similar to is operator, but returns not Boolean, but the result of expression:</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var orderId:String=&#8221;123&#8221;;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var orderIdN:Number=orderId as Number;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">trace(orderIdN);//prints 123</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Primitives</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">byte, int, long, float, double,short, boolean, char</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">all primitives in ActionScript are<span style="font-size: 10pt; ">objects.<br />Boolean, int, uint, Number, String</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">The following lines are equivalent;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var age:int = 25;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var age:int = new int(25);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Complex types</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Array, Date, Error, Function, RegExp, XML, and XMLList</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Array declaration and instantiation</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">int quarterResults[];</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">quarterResults =<br />new int[4];</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">int quarterResults[]={25,33,56,84};</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var quarterResults:Array<br />=new Array();</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">or</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var quarterResults:Array=[];</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var quarterResults:Array=<br />[25, 33, 56, 84];</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">AS3 also has associative arrays that uses named elements instead of numeric indexes (similar to Hashtable).</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">The top class in the inheritance tree</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Object</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Object</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Casting syntax: cast the class Object to Person:</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Person p=(Person) myObject;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var p:Person= Person(myObject);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">or</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px 0.4em 0in; ">var p:Person= myObject as Person;</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">upcasting</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">class Xyz extends Abc{}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Abc myObj = new Xyz();</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">class Xyz extends Abc{}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var myObj:Abc=new Xyz();</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Un-typed variable</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var myObject:*</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var myObject:</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">packages</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">package com.xyz;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">class myClass {&#8230;}</span></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">package com.xyz{</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">class myClass{&#8230;}</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">}</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">ActionScript packages can include not only classes, but separate functions as well</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Class access levels</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">public, private, protected</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">if none is specified, classes have package access level</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">public, private, protected</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">if none is specified, classes have<span style="font-size: 8pt; ">internal</span>&nbsp;access level (similar to package access level in Java)</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Custom access levels: namespaces</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Similar to XML namespaces.</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">namespace abc;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">abc function myCalc(){}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">or</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">abc::myCalc(){}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">use namespace abc ;</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Console output</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">System.out.println();</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">// in debug mode only</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">trace();</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">imports</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">import com.abc.*;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">import com.abc.MyClass;</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">import com.abc.*;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">import com.abc.MyClass;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">packages must be imported even if the class names are fully qualified in the code.</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Unordered key-value pairs</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Hashtable, Map</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Hashtable friends = new Hashtable();</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">friends.put(&#8220;good&#8221;,<br />&#8220;Mary&#8221;);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">friends.put(&#8220;best&#8221;,<br />&#8220;Bill&#8221;);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">friends.put(&#8220;bad&#8221;,<br />&#8220;Masha&#8221;);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">String bestFriend= friends.get(&#8220;best&#8221;);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">// bestFriend is Bill</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Associative Arrays</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Allows referencing its elements by names instead of indexes.</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var friends:Array=new Array();<br />friends["good"]=&#8221;Mary&#8221;;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">friends["best"]=&#8221;Bill&#8221;;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">friends["bad"]=&#8221;Masha&#8221;;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var&nbsp;</span>bestFriend:String= friends[&#8220;best&#8221;]</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">friends.best=&#8221;Alex&#8221;;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Another syntax:</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var car:Object = {make:&#8221;Toyota&#8221;, model:&#8221;Camry&#8221;};</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">trace (car["make"], car.model);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">// Output: Toyota Camry</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Hoisting</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Compiler moves all variable declarations to the top of the function, so you can use a variable name even before it&#8217;s been explicitly declared in the code.</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Instantiation objects from classes</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Customer cmr = new Customer();</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Class cls = Class.forName(&#8220;Customer&#8221;);</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">Object myObj= cls.newInstance();</span></p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">var cmr:Customer = new Customer();</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var cls:Class = flash.util.getClassByName(&#8220;Customer&#8221;);<br />var myObj:Object = new cls();</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Private classes</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">private class myClass{&#8230;}</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">There is no private classes in AS3.</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Private constructors</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Supported. Typical use: singleton classes.</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Not available. Implementation of private constructors is postponed as they are not the part of the ECMAScript standard yet.</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">To create a Singleton, use public static getInstance(), which sets a private flag instanceExists after the first instantiation. Check this flag in the public constructor, and if instanceExists==true, throw an error.</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Class and file names</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">A file can have multiple class declarations, but only one of them can be public, and the file must have the same name as this class.</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">A file can have multiple class declarations, but only one of them can be placed inside the package declaration, and the file must have the same name as this class.</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">What can be placed in a package</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Classes and interfaces</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Classes, interfaces, variables, functions, namespaces, and executable statements.</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Dynamic classes (define an object that can be altered at runtime by adding or changing properties and methods).</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">dynamic class Person {</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var name:String;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">//Dynamically add a variable // and a function</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">var p:Person = new Person();</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">p.name=&#8221;Joe&#8221;;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">p.age=25;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">p.printMe = function () {</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">trace (p.name, p.age);</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">p.printMe(); // Joe 25</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">function closures</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a. Closure is a proposed addition to Java 7.</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 8pt; ">myButton.addEventListener(&#8220;click&#8221;, myMethod);</span></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 10pt; ">A closure is an object that represents a snapshot of a function with its lexical context (variable&#8217;s values, objects in the scope). A function closure can be passed as an argument and executed without being a part of any object</span></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Abstract classes</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">supported</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">n/a</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Function overriding</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">supported</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Supported. You must use the override qualifier</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Function overloading</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">supported</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Not supported.</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Interfaces</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">class A implements B{&#8230;}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">interfaces can contain method declarations and final variables.</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">class A implements B{&#8230;}</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">interfaces can contain only function declarations.</p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Exception handling</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 9pt; font-family: Utopia; ">Keywords:</span>&nbsp;try, catch, throw, finally, throws</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Uncaught exceptions are propagated to the calling method.</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><span style="font-size: 9pt; font-family: Utopia; ">Keywords:&nbsp;</span>try, catch, throw, finally</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">A method does not have to declare exceptions.</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Can throw not only Error objects, but also numbers:</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">throw 25.3;</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Flash Player terminates the script in case of uncaught exception.</p><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "></p></td></tr><tr><td valign="top" style="border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 145px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Regular expressions</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 168px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Supported</p></td><td valign="top" style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 229px; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; ">Supported</p></td></tr></tbody></table></div><div style="font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: normal; text-align: left; background-color: #ffffff; "><p style="font-size: 1em; line-height: 1.5em; margin: 0.4em 0px; "><br /></p></div><img src ="http://www.blogjava.net/gembin/aggbug/382482.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2012-07-07 22:44 <a href="http://www.blogjava.net/gembin/archive/2012/07/07/382482.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AS3编码规范</title><link>http://www.blogjava.net/gembin/archive/2011/06/03/351658.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Fri, 03 Jun 2011 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2011/06/03/351658.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/351658.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2011/06/03/351658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/351658.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/351658.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2011/06/03/351658.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/351658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2011-06-03 11:20 <a href="http://www.blogjava.net/gembin/archive/2011/06/03/351658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AS3 depth sorting of display objects</title><link>http://www.blogjava.net/gembin/archive/2010/11/18/338393.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Thu, 18 Nov 2010 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2010/11/18/338393.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/338393.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2010/11/18/338393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/338393.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/338393.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Sometimes i remember back, how easy it was in AS2 days to cope with visual objects&#180; depths or z-indexes, looping lists with applying the iterator to the depth of an object during instanciation by...&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2010/11/18/338393.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/338393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2010-11-18 16:04 <a href="http://www.blogjava.net/gembin/archive/2010/11/18/338393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AS3-DI-Metadata</title><link>http://www.blogjava.net/gembin/archive/2010/11/12/337911.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Fri, 12 Nov 2010 06:44:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2010/11/12/337911.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/337911.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2010/11/12/337911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/337911.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/337911.html</trackback:ping><description><![CDATA[<h2 style="margin-top: 1.5em !important; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em !important; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 4px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 20px; border-top-style: solid !important; border-top-color: #e0e0e0 !important; font-family: helvetica, arial, freesans, clean, sans-serif; ">What a Metamess</h2>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Spring Actionscript, Dawn, SmartyPants, Swiz, Spicelib (used by Parsley) and SwiftSuspenders (used by Robotlegs) perform Dependency Injection.</p>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Moreover they can all perform automatic DI by parsing class metadata. It would be grand if the common DI related metadata tags could be standardised. That way we really could write code that is decoupled from any particular framework.</p>
<h3 style="margin-top: 1em !important; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Injection by Type</h3>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Dawn, Swiz, Spicelib, SwiftSuspenders, SmartyPants: [Inject] (above property, setter or method)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Spring AS: [Autowire] (above property, setter or method)</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Most popular</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">[Inject] by 5</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Notes</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">[Inject] is clear and simple and used by almost all of the libraries. It also directly correlates to @Inject from the JSR-330 Dependency Injection for Java specification. Let&#8217;s use it.</p>
<h3 style="margin-top: 1em !important; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Injection by Name/Id</h3>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Dawn, SwiftSuspenders, SmartyPants: [Inject(name=&#8220;SomeName&#8221;)] (above property, setter or method)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Swiz: [Inject(source=&#8220;SomeName&#8221;)] (above property, setter or method)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Spicelib: [Inject(id=&#8220;SomeName&#8221;)] (above property, setter or method)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Spring AS: [Autowired(name=&#8220;SomeName&#8221;)] (above property, setter or method)</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Most popular</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">[Inject(name=&#8220;SomeName&#8221;)] by 3</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Notes</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Since you can define default attributes best practice could be to leave out the attribute: [Inject(&#8220;SomeName&#8221;)]</p>
<h3 style="margin-top: 1em !important; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Constructor Injection:</h3>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">SwiftSuspenders: [Inject] (above class)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Spicelib: [InjectConstructor] (above class)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Swiz, Spring AS, Dawn: ?</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Most popular</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">?</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Notes</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">I don&#8217;t see the need for an extra tag ([InjectConstructor]) when we could simply use [Inject].</p>
<h3 style="margin-top: 1em !important; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Object Lifecycle &#8211; Post Injection:</h3>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Dawn, SwiftSuspenders, SmartyPants, Swiz: [PostConstruct] (above method)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Spicelib: [Init] (above method)</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Most popular</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">[PostConstruct] by 4</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Notes</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">@PostConstruct is used in Java for the same purpose. Let&#8217;s use the most popular, established one.</p>
<h3 style="margin-top: 1em !important; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Object Lifecycle &#8211; Teardown:</h3>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">SwiftSuspenders, SmartyPants, Dawn: none?<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Swiz: [PreDestroy] (above method)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Spicelib: [Destroy] (above method)</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Most popular</h4>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Notes</h4>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">@PreDestroy is used in Java for the same purpose. Let&#8217;s use the most familiar, established one.</p>
<h3 style="margin-top: 1em !important; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">Factory/Provider:</h3>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em !important; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; ">SwiftSuspenders, SmartyPants, Swiz: none?<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Dawn: [Provider] (above method)<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; " />
Spicelib: [Factory] (above method)</p>
<img src ="http://www.blogjava.net/gembin/aggbug/337911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2010-11-12 14:44 <a href="http://www.blogjava.net/gembin/archive/2010/11/12/337911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Smartfoxserver </title><link>http://www.blogjava.net/gembin/archive/2010/11/12/337880.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Fri, 12 Nov 2010 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2010/11/12/337880.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/337880.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2010/11/12/337880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/337880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/337880.html</trackback:ping><description><![CDATA[<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SmartFoxServer 是专门为Adobe Flash设计的跨平台socket服务器，让开发者高效地开发多人应用及游戏. 该服务器主要用来创建多玩家游戏。并提供强大的制作工具，各种回合制游戏和实时游戏都可以胜任。 SmartFoxServer 支持的播放器从Flash player6版到最新的Flash Player 9，并提供丰富的Actionscript 1.0, 2.0 and 3.0 APIs,同时也支持 Flex Builder 2 and 3. 该产品带有详细的帮助文档, 大约 35 个带源代码的示例 还有强大的远程管理工具. 本入门假定你会基本的flex3开发知识。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SFS简介快速 可靠:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SmartFoxServer 是基于高效和可升级的结构，可以在单CPU服务器机子上处理数千的客户端. 是有名的平民的服务器，最低支持P2-350Mhz。很多公司和游戏机构都已经使用 SmartFoxServer 开发出了很多高质量的在线多玩家应用及游戏。比如Club Penguin</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">高制作能力:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SmartFoxServer 带有一套支持Actionscript 1.0, 2.0 和 Actionscript 3.0 的APIs 他们都是从flash核心对象扩展出来的新功能，可以让开发者简单快速地开发多玩家应用.</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">扩展性:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SmartFoxServer 可以使用Actionscript, Javascript, Python and Java进行服务器端的扩展. 自定义服务器端扩展，可以执行复杂的应用，游戏逻辑，高级用户，房间管理，及服务器新行为，等等 另外。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">跨平台性:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SmartFoxServer 可以运行在任何系统上: 因为SmartFoxServer 是100%的纯 Java 开发的应用,它可以运行在任何平台上,如：Windows (NT/2K/XP/2003), Linux, MacOS X (10.4 or higher), Solaris 等等.</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">强大的附加软件:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SmartFoxServer 带有强大的附加软件来扩展其功能:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">BlueBox:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">让玩家避开网络限制(防火墙, 代理) 来进行多玩家游戏，而不牺牲连接速度. 因为 API 会自动在&#8221;幕后&#8220;选择最好的连接系统。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">RedBox:</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">免费开源的附加软件，使在SmartFoxServer的框架中集成了音频/视频流的能力（red5）, 并简化了 A/V应用的开发难度。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">什么是SFS客户端的API？</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">Sfs已经为你做好了基本的客户端网络通信通道，这个通道可以联通服务端的相关功能模块来实现相关功能。比如用户登录/房间登陆/用户信息广播/更新用户房间信息等等。你只调用和扩展通道中的指定方法即可。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">如何安装？</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">从www.smartfoxserver.com 中找到最新版本的smartfoxserverpro（1.6.2）。然后安装找到RedBoxClient_AS3.SWC在flex3中导入此客户端插件。当然也可以将flashapi中的AS3中源文件直接拷到自己的项目中。这样就可以调用SFS的客户端的API了。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">基本步凑</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">发起socket连接:这是第一步. 就像是在敲服务器的门。如果服务器开着就会相应你，并激活一个连接。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">登入: 在这一阶段，你要告诉服务器你是谁你想和哪个应用交互，如果操作成功的话，你就可以当前zone里的房间列表</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">加入房间: 一旦进入了房间，你就可以和其他用户和应用的逻辑进行交互。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">SmartFoxClient 详细介绍</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">安装：</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">在flex3中导入项目Examples/as3/smartfoxchat；</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">smartfoxchat.mxml是其客户端的主文件。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">重要常量信息：</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">// Connection constants</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">private const serverIp:String = &#8220;211.157.41.204&#8243;</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">private const serverPort:int = 9339</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">private const serverZone:String = &#8220;simpleChat &#8221;</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">以上都是连接的重要信息，第一个是serverip是你的服务器的IP地址；第二个子是端口号，第三个是Zone名称（zone是服务端对于相关集成的功能模块的单位代称）；</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">常用事件：</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">package &#8230;{</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">import flash.display.Sprite;</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">//Establish connection with the server</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">public function connect():void</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">{</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sfs.connect(serverIp, serverPort)</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">}</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">以上是连接服务端的方法，只要知道IP和端口号我们就可以对SFS服务器进行联接了。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sfs = new SmartFoxClient(true)</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sfs.debug = false;</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">// Add event listeners</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sfs.addEventListener(SFSEvent.onConnection, onConnection)</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">以上代码是生成一个客户端SFS通道实例。然后监听联连，一旦客户端与服务联通后客户端就可以收到onConnection的这个事件信息。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sfs.addEventListener(SFSEvent.onLogin, onLogin)</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">Sfs的事件监听基本上是按smartfoxchat.mxml的顺序在走的，onconnetion之后就会会监听到onlogin，这个事件的用处只在于失败登录后客户端会在debug里看到自定义的一段错误信息。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sfs.addEventListener(SFSEvent.onRoomListUpdate, onRoomListUpdate)</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">登录成功后第一件是收到一个房间列表，客户端的相关list控件通常会绑定这个列表信息这样就可以显示了。要注意的是这里最后有一个sfs.autoJoin()，如果执行将会自动的进行一个房间如果不执行登录程序将到此结束。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sfs.addEventListener(SFSEvent.onJoinRoom, onJoinRoom)</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">当客户端执行了sfs.joinRoom(roomId)，服务端将会派发onJoinRoom事件客户端，客户端再执行onJoinRoom。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">常用实例方法：</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">代码</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sendObject (obj:Object, roomId:int = -1) : void　　　　　　 　　　　　　　　　　　//在当前房间发送一个Actionscript对象给其他用户。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">setUserVariables (varObj:Object, roomId:int = -1) : void 　　　　　　　　　　　　//设置一个或多个用户变量。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sendPublicMessage (message:String, roomId:int = -1) : void 　　　　　　　　　　//发送一个公有消息。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">sendPrivateMessage (message:String, recipientId:int, roomId:int = -1) : void 　　//发送一个私有消息给用户。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">joinRoom (newRoom:*, pword:String = &#8220;&#8221;, isSpectator:Boolean = false, dontLeave:Boolean = false, oldRoom:int = -1) : void //加入一个房间。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">leaveRoom (roomId:int) : void //离开一个特定的房间。（断开一个特定房间的连接）。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">C:\Program Files\SmartFoxServerPRO_1.6.2\Docs\index.htm</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">这是SFS的文档主界面，里面有全部的所有SFS的相关资料及所有类的及方法属性的介绍。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">市面上其实还有与SFS同类的相关产品，比如adobe的FMS（flash medio server)流媒体服务器可以高效的处理flash流媒体服务（专门针对视音频流不是专门针对游戏）。Java的mina，java的可用于多人实时的服务器。sun game server(sgs)http://www.projectdarkstar.com/。还有python中的twisted框架也可以实现较简单的服务器。</p>
<p style="color: #555555; font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; ">以上说的服务器都是指可以多人实时大部分都支持socket，fms除外</p>
<img src ="http://www.blogjava.net/gembin/aggbug/337880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2010-11-12 10:32 <a href="http://www.blogjava.net/gembin/archive/2010/11/12/337880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 4: change baseColor to chromeColor and useChromeColor=true</title><link>http://www.blogjava.net/gembin/archive/2010/06/18/323834.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Fri, 18 Jun 2010 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2010/06/18/323834.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/323834.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2010/06/18/323834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/323834.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/323834.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2010/06/18/323834.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/323834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2010-06-18 17:30 <a href="http://www.blogjava.net/gembin/archive/2010/06/18/323834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>as3 9-slice scaling</title><link>http://www.blogjava.net/gembin/archive/2010/06/14/323579.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Mon, 14 Jun 2010 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2010/06/14/323579.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/323579.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2010/06/14/323579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/323579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/323579.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2010/06/14/323579.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/323579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2010-06-14 22:10 <a href="http://www.blogjava.net/gembin/archive/2010/06/14/323579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>视频: 偷窥2 Adobe ROME Adobe Max 2009(COOL!)</title><link>http://www.blogjava.net/gembin/archive/2009/10/12/297992.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Mon, 12 Oct 2009 14:26:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2009/10/12/297992.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/297992.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2009/10/12/297992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/297992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/297992.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 视频: 偷窥2 Adobe ROME Adobe Max 2009!!!!&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2009/10/12/297992.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/297992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2009-10-12 22:26 <a href="http://www.blogjava.net/gembin/archive/2009/10/12/297992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Adobe ROME Preview(COOL!)</title><link>http://www.blogjava.net/gembin/archive/2009/10/12/297989.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Mon, 12 Oct 2009 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2009/10/12/297989.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/297989.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2009/10/12/297989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/297989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/297989.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2万行ActionScript代码打造Adobe ROME!!!&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2009/10/12/297989.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/297989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2009-10-12 22:20 <a href="http://www.blogjava.net/gembin/archive/2009/10/12/297989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创] Dynamic DataService registration in OSGi Container for Graniteds v1.1.0</title><link>http://www.blogjava.net/gembin/archive/2008/12/04/244374.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Thu, 04 Dec 2008 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/12/04/244374.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/244374.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/12/04/244374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/244374.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/244374.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Dynamic DataService registration in OSGi Container for Graniteds v1.1.0&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/12/04/244374.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/244374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-12-04 14:51 <a href="http://www.blogjava.net/gembin/archive/2008/12/04/244374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MAX2007年会总结十项技术(转)</title><link>http://www.blogjava.net/gembin/archive/2008/09/24/230871.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 24 Sep 2008 06:21:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/24/230871.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/230871.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/24/230871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/230871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/230871.html</trackback:ping><description><![CDATA[<strong>关键字: flex max</strong>
<div class="blog_content">
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">1. Flex Builder 3/AIR beta2 on lab</span></strong></span></p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">这两样东西会在<span> max </span>期间放出<span> beta 2 (M5) </span>应该算是旧闻，还有人事先不知道才是比较奇怪。</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>beta2 </span><span>本身的新功能在 <span><a href="http://ria.richtechmedia.com/go.php?http://labs.adobe.com/wiki/index.php/Flex_3:Feature_Introductions" title="(120 hits)">wiki</a> </span>上有详细介绍，但重点不外乎在<span> IDE </span>本身的强化、<span>AIR </span>整合、<span>CSS </span>设计与<span> Profiler</span>等。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">比较重要的是大概有三点</span></span></span><span><span style="font-size: small; font-family: 宋体;">-</span></span><span><span style="font-size: small; font-family: 宋体;">新售价出来了，将来<span> FB </span>分两种版本</span><span><br />
<span style="font-size: small;"><span style="font-family: 宋体;">Standard: $299<br />
Pro: $699</span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>Standard </span><span>比现在<span> $499 </span>还降<span>200</span>元，所以现在是流行<span><a href="http://ria.richtechmedia.com/go.php?http://chinese.engadget.com/2007/09/05/apple-cuts-iphone-price-to-399/" title="(179 hits)"><span><span>新版本都要降两百吗</span></span></a></span>？不过没有<span> charting component, </span>这些玩意<span>(</span>包含像<span> AdvancedDataGrid </span>这种<span> visual data component</span>等<span>)</span>都移到<span> Pro </span>版。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">这样做的意义很明显，主要就是要大幅降低<span> flex </span>的进入门坎，原本要<span>$499 </span>才能有拥有<span> IDE</span>，现在只要<span> $299 </span>几乎是人人买的起，另一方面，对每天靠开发<span> flex </span>为生的人来说，将好料的一次全塞入<span>pro</span>版，而且比现在<span> $799 </span>低了<span> 100</span>元，也算是方便许多，至少付一次钱就可以买到全部的东西<span>(</span>而不用再一样样去付费然后拼起来<span>)</span>，这个市场策略不错。</span></span></span><span><span style="font-size: small; font-family: 宋体;">-Linux </span></span><span><span style="font-size: small; font-family: 宋体;">版问市</span><span><br />
</span><span style="font-size: small;"><span style="font-family: 宋体;">这世界上似乎有很多人一直想在<span> linux </span>上开发<span> flex</span>，而且只用<span> text editor + sdk </span>还不够，一定要有<span> IDE </span>才过瘾，现在可称心如意了，<span>beta</span>版已可在<span> lab </span>上下载。</span></span></span><span><span style="font-size: small; font-family: 宋体;">-flex testing framework </span></span><span><span style="font-size: small; font-family: 宋体;">改为免费</span><span><br />
</span><span style="font-size: small;"><span style="font-family: 宋体;">以往要用<span> Mercury Quicktest Pro </span>来做<span> UI testing </span>时，必需要先装<span> testing framework, </span>但它需要一组<span> FDS </span>的序号才能使用，而几乎没人会愿意花<span> $6,000-$12,000</span>的价钱去买这玩意。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">两个月前我在玩某个<span>fb3 beta </span>版本时，意外在安装目录下发现居然内建了这个<span> installer</span>，而且还真的可以装也可以用，那时我以为是只是单纯的意外不小心包了进去<span>(</span>或是<span> adobe </span>心想反正卖不掉干脆欢乐大放送<span>)</span>，现在才知道原来这些是故意的啊<span>~</span></span></span></span></p>
<p><span></span></p>
<p><span></span><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">2. Thermo</span></strong></span></p>
<span><span style="font-size: small; font-family: 宋体;">粗略简介看</span><span><a href="http://ria.richtechmedia.com/go.php?http://labs.adobe.com/wiki/index.php/Thermo" title="(181 hits)"><span><span><span style="font-size: small; font-family: 宋体;">这里</span></span></span></a></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span><br />
<img src="http://labs.adobe.com/wiki/images/1/14/ThermoA.png" alt="" /></span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span> </span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span>Max </span><span>期间另一个重头戏就是<span> Thermo </span>初亮相，网络上已经有一些影片可看。</span></span></span></p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">目前看来它的操作方式很像<span> adobe </span>产品的大合体，我观察到的包含</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-</span><span>可直接读入<span> Photoshop PSD </span>档，并且当然保留所有的<span> layer </span>信息与<span> meta info</span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-</span><span>读入的<span> psd </span>档会以<span> tracing image </span>的方式显示在底层<span>(</span>这是跟<span> dreamweaver </span>与<span> golive </span>借来的概念<span>)</span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-</span><span>可用类似<span> edit in place (</span>这是<span> fireworks, image ready, golive </span>时代就有的东西<span>)</span>将画面元素转换为<span> mxml </span>组件，而且会保留<span> style info</span></span></span></span><span><span style="font-size: small; font-family: 宋体;">-</span></span><span><span style="font-size: small; font-family: 宋体;">转换成<span> mxml </span>后会使用新的<span> tag </span>来标识，例如<span> mx:bitmapGraphic </span>与</span><span><br />
<span style="font-size: small;"><span style="font-family: 宋体;">mx:borderSkinFactory</span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-</span><span>可制作多个<span> state </span>并在其间切换<span>(</span>这跟<span> fireworks cs3 </span>里新出现的<span> page </span>面板概念完全一致<span>)</span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-</span><span>拥有<span> timeline </span>可制作<span> transition/effect</span>，例如<span> mouseover </span>时某个对象要渐大或渐小等变化，乍看之下很像是<span> flash </span>附身<span> XD</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">整段影片看完初步的感觉如下：</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>1</span><span>、我至少在<span> thermo </span>里看到<span> photoshop, flash, fireworks, dreamweaver, image ready, golive </span>等软件的功能与影子，这应该可说是合并后<span> 1+1 &gt; 2 </span>的例子之一吧</span></span></span><span style="font-size: small;"><em><span style="font-family: 宋体;">2</span></em><em><span style="font-family: 宋体;">、目前看来工作流程会是这样</span></em></span><span><span style="font-size: small;"><span style="font-family: 宋体;">Photoshop -&gt; Thermo &lt; -&gt; Flex</span></span></span><span><span style="font-family: 宋体;"><span style="font-size: small;">也就是视觉的东西<span> 70% </span>都在<span> photoshop/illustrator </span>里做好，然后将<span> psd </span>丢给<span> thermo </span>做<span> interaction design</span>，但它也同时提供了<span> mxml </span>产生器，让设计师可以将进一步跨界将视觉元素转成可编程的<span> mxml </span>组件，最后交给工程师去<span> coding</span>。</span></span></span><span style="font-size: small;"><em><span style="font-family: 宋体;">3</span></em><em><span style="font-family: 宋体;">、至于<span> thermo </span>实不实用呢？</span></em></span><span><span style="font-size: small;"><span style="font-family: 宋体;">嗯，这要看你怎么定位它。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">从历史上来看，类似<span> fireworks/image ready </span>这种<span> psd to html </span>产生器的工作流程基本上从来没成功过，因为<span> one-way </span>式的从<span> psd </span>到<span> html </span>或许很容易，但当<span> html </span>要回到<span> psd </span>时，困难度就很高，到最后都是『工人智慧』来解决。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">但如果从<span> quick-prototyping or Proof of Concept(POC)</span>的角度来看，<span>thermo </span>可能会是很好的帮手，因为设计师可以尽情的发挥视觉设计将美美的版面做出来，然后透过<span> thermo </span>产生可实际操作的<span> flex </span>接口，这样客户可以看的到也摸的到将来实际成品可能的样貌，制作团队也能比较完整的掌握客户想要的东西。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">至于真正要开始制作<span> flex app</span>时，我想<span> thermo </span>的帮助就不大，因为让不懂程序的设计师来帮忙切<span> ui </span>组件？决定每个<span> module </span>该如何画分？这样冒的风险实在太大，切出来的<span>mxml </span>大概也没法用，最后还是要重新来。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">但这又带到另一个鸡生蛋、蛋生鸡的老问题。</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>Thermo </span><span>之
所以会出现，是为了解决工程师不懂如何将视觉画面转换为成品，因此希望由设计师来帮忙这件事，但由设计师来做这件事缺点也很多，上面也已稍微解释，所以这
仍然是一个两难的问题，也就是设计师帮忙切画面，切出来的东西可能工程师觉得不好用或无法用，但由工程师去切画面，可能整支程序画面也就毁了，所以最终下
场差不多。</span></span></span><span><span style="font-size: small; font-family: 宋体;">依我这几年全职开发<span> flash/flex </span>的经验来看，以往许多人提出的</span><span><br />
<span style="font-size: small; font-family: 宋体;">graphic designer - interaction designer - developer </span></span><span style="font-size: small;"><span style="font-family: 宋体;">三级分工制只能算是第一步，<span>thermo </span>的出现可能可以实质帮到<span> interaction designer </span>的忙，但<span> interaction designer </span>到<span> developer </span>这段仍然会是断层，而解决之道，则是要找到一个方式将这<span> missing link </span>给补起来，这也将是<span> thermo </span>成败的最大关键<span>(</span>目前看来，<span>blend/expression/xaml </span>的尝试不甚成功，希望<span> adobe</span>可以另觅它途让人眼睛一亮啊<span>)</span></span></span></span></p>
</span></span></span>
<p><span></span></p>
<p><span></span><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">3. Flash Player 10 (codename Astro) </span></strong></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span>FP9 </span><span>从<span> as2 </span>发展到<span> as3 </span>可说是<span> flash </span>十年来最惊人的大跃进，几乎完全改写了<span> RIA </span>的历史，原本以为大概很难再看到同样<span> level </span>的改版，但很显然我错了。</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>FP10 </span><span>新增的几个重点功能大略包含</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-</span><span>简易的<span> hardware 3D support</span>：看来原本打死不愿意为<span> fp </span>加入<span>3d</span>功能的<span> engineering team </span>还是很顺应民情啊，当然目前看到的<span> 3d </span>功能还非常有限，有人称它为<span> 2.5D</span>，也有人称为<span> card-game style 3D</span>，不过就我对<span> flash player team </span>的了解，将来内建的<span> 3D </span>功能追上<span> Papervision3D </span>应该是没问题的。</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-advanced text layout: </span><span>这包含了<span> multi-column </span>的走文方式，也包含了<span> right-to-left layout(RTL)</span>，这两件事在过去我们都遇过，去年制作的一个大型<span>app</span>在多国语言化时，客户居然问：『希伯来文版的接口文字应该是从右到左啊，可以改一下吗？』当时心里的回答：『当然可以，你先买下<span> flash player team </span>交给我指挥，我保证半年内生出来给你<span>&#8230;</span>』现在这件事可简单多了，只是<span> UI Component </span>部份要改写的东西还是很费力啊。</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>-custom filter/effect with &#8220;Hydra&#8221; image processing language:<br />
</span><span>这算是非常有趣的新玩意，<span>Hydra </span>是一种类似<span> C </span>的语言，<span>user </span>可用它编辑自已独门的<span> filter/effect</span>，之前有<span> Vector/Bitmap API </span>大家就已经玩出一堆疯狂的把戏，现在有了更<span> low-level </span>的工具，呵呵呵，精彩可期，只是以后教<span> flash </span>的讲师是不是也要进修一下<span> C/C++ </span>了<span>? Orz</span></span></span></span></p>
<p><span style="font-size: small;"></span></p>
<p><span style="font-size: small;"></span><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">4. Flash Lite 3 </span></strong><strong><span style="font-family: 宋体;">推出</span></strong></span></p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">功能介绍看<span><a href="http://ria.richtechmedia.com/go.php?http://www.adobe.com/products/flashlite/features/" title="(159 hits)"><span><span>这里</span></span></a></span></span></span></span><span><span style="font-size: small; font-family: 宋体;">重点有</span><span><br />
<span style="font-size: small; font-family: 宋体;">-flash home: </span></span><span style="font-size: small;"><span style="font-family: 宋体;">这个算是真正的新玩意，以往<span> flash lite </span>都是以<span> app </span>的型式存在于手机上，也就是要用时才启动，但<span> flash home </span>则是直接用<span> flash lite </span>取代掉手机的开机画面，一开机完就是<span> flash lite </span>在那里，而且它是<span> instant on</span>。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">之前曾聊过<span> LG phone </span>整个<span> UI </span>都用<span> flash lite </span>写成，现在则是更进一步攻占了开机画面，未来的发展非常有趣啊，希望它能尽快追上<span> as3 </span>的脚步，把传说中的<span> flex framework for mobile </span>搬出来，届时可就玩到乐翻天了。</span></span></span><span><span style="font-size: small; font-family: 宋体;">-as2 support: </span></span><span><span style="font-size: small; font-family: 宋体;">这个好像喊很久了，现在真的支持<span> class </span>了吗？</span><span><br />
<span style="font-size: small; font-family: 宋体;">-flv support: </span></span><span style="font-size: small; font-family: 宋体;">这个到是很重要的新功能，不过已经不是新闻，今年初时就已发表</span><span><br />
<span style="font-size: small; font-family: 宋体;">-xml loading: </span></span><span style="font-size: small;"><span style="font-family: 宋体;">从<span> flash lite 2.1 </span>起就可以支持<span> socket server</span>，所以要在手机上玩<span> push/pull </span>变的非常简单</span></span></span><span style="font-size: small;"><strong><span style="font-family: 宋体;">&nbsp;</span></strong></span></p>
<p></p>
<p><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">5. VOIP in flash</span></strong></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span>FP </span><span>将支持<span> voip </span>不是新闻，但真正看到它运作还是吓一跳。</span></span></span><span><a href="http://ria.richtechmedia.com/go.php?http://pac.ifica.net/" title="(180 hits)"><span style="font-size: small; font-family: 宋体;">Pacifica</span></a><span style="font-size: small; font-family: 宋体;"> </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">是这个产品的代号，它将提供下列功能<span>:</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">Version 1:<br />
* HQ voice chat<br />
* text instant messaging<br />
* presence<br />
* NAT/Firewall traversal<br />
* Ajax/HTML, Flash/Flex</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">Future Roadmap:<br />
* video chat<br />
* p2p<br />
* AIR<br />
* PSTN Access</span></span></span><span><span style="font-size: small; font-family: 宋体;">要注意的重点是这几个字<span>: VoIP, SIP, SDP </span>与<span> P2P</span>。</span><span><br />
</span><span style="font-size: small;"><span style="font-family: 宋体;">你能想象一旦<span> flash player </span>本身内建<span> VoIP </span>与<span> SIP </span>支持后，可能的应用有多广吗？简单来说，上面<span>listing </span>里面随便一项，都可以将这个世界再翻一遍，差不多就是这样的影响力。</span></span></span></p>
<p></p>
<p><span></span><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">6. CoCoMo</span></strong></span></p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">这可不是<span> Adobe </span>与 <span><a href="http://ria.richtechmedia.com/go.php?http://lyrics.songtext.name/Beach%20Boys/Cocomo-24210.html" title="(131 hits)">Beach Boys</a> </span>的异业结盟。</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>CoCoMo </span><span>是<span> Adobe Connect (</span>也就是<span> Breeze) </span>新版本的代号，不出所料果然用<span> flex </span>全部改写，但更惊人的是它开始玩起另一个更有潜力的市场，<span>API platform !</span>将来<span> flex developer </span>可操作<span> Adobe Connect </span>的<span> API </span>来制作各种<span> desktop sharing, audio/video chat &amp; collaboration</span>，相较之下，之前炒的火热的<span> facebook platform </span>实在是没什么啊<span>(</span>不过当然这两者可以是完美的互补，不一定是零合游戏<span>)</span>。</span></span></span></p>
<p></p>
<p><span style="font-size: small;"></span><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">7. Share</span></strong></span></p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">一个<span><a href="http://ria.richtechmedia.com/go.php?http://share.adobe.com/" title="(194 hits)"><span><span>在线文件、分享、阅读的平台</span></span></a></span>，每个<span>user </span>有<span> 1gb </span>空间。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">同样用<span> flex </span>写成，用了许多熟悉的组件，例如<span> page component (oh, the great Ely!) </span>与<span> flash paper</span>，也提供<span> REST style API </span>可供<span> mesh up</span>，将来打算整合<span> Buzzword </span>提供编辑功能。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">从本质来看，<span>online-doc sharing </span>这种东西当然早就有人做过了，网络上随便都可以找到一狗票，同样是让人上传文件，然后转档成<span> swf </span>再用<span> flash player </span>来看，那<span> adobe </span>又何苦呢？</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">就我来看，<span>Share </span>是<span> adobe </span>在<span> web publishing </span>方面的新尝试，主要利用的优势当然就是自家的<span> PDF </span>与<span> flash player</span>，但跟其它单纯只是 <span>web 2.0 startup </span>公司不同的是，<span>adobe </span>心里想的应该是它完整的<span> electronic publishing </span>平台，从内容、制作、生成到消费，希望能通通包下来，建立大一统的体系，我相信<span> Share </span>与之前介绍过的<span> ebook reader </span>都只是这个计划下的部份产物，未来发展还待观察。</span></span></span></p>
<p></p>
<p><span></span><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">8. C/C++ to AS3 conversion</span></strong></span> </p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;<img src="http://www.boostworthy.com/blog_articles/adobemax2007/max13.jpg" alt="LLVM" width="491" border="0" height="326" /></span></span></span></p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">这个玩意非常有趣，这位神人写了一个<span> compiler</span>，可以将<span> C/C++ </span>的<span> code </span>直接转译成<span> AS3</span>，然后再编译成<span> swf </span>供<span> flash/flex/air </span>使用，现场最另人震撼的<span> demo </span>就是他直接将<span> Quake (</span>一个<span> doom-like </span>的射击游戏<span>) </span>编译成<span> flash </span>版然后玩了起来，你可以想见现场会疯狂到什么程度<span>!! (</span>更酷的是这位工程师还是一副平淡的表情，真正是扮猪吃老虎的极致表现啊<span>)</span>。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">好，热情完毕，接着分析师上身。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">我主要思考的是下列三点：</span></span></span><span><span style="font-size: small; font-family: 宋体;">1. </span></span><span><span style="font-size: small; font-family: 宋体;">为何需要这个东西？上图中四个角落写着<span> (ruby, php, python, lua), </span>它代表什么？</span><span><br />
<span style="font-size: small; font-family: 宋体;">2. </span></span><span style="font-size: small; font-family: 宋体;">这东西背后的企图是什么？</span><span><br />
<span style="font-size: small; font-family: 宋体;">3. </span></span><span style="font-size: small;"><span style="font-family: 宋体;">谁会获益？它可以用在什么地方？发展潜力有多大？</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">基本上我已经有了一套大致的想法与理论，但很有兴趣想听听各位的想法。</span></span></span></p>
<p></p>
<p><span></span><span style="font-size: small;"><strong></strong></span></p>
<p><span style="font-size: small;"><strong><span style="font-family: 宋体;">9. Adobe </span></strong><strong><span style="font-family: 宋体;">买下<span> Buzzword</span></span></strong></span></p>
<p><span style="font-size: small;"><strong></strong></span><span><span style="font-size: small;"><span style="font-family: 宋体;">这件事其实几个月前就有风声出来，当 <span>adobe </span>第一批工程师进驻<span> buzzword </span>办公室时，明眼人就知道是怎么回事了，反而比较奇怪的为何<span> SlideRocket </span>一直谈不下来<span>(</span>趁人家还没<span> IPO </span>前多撒点钱快点搞定将来比较好办事啊<span>)</span>？</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">从市场角度来看，<span>Buzzword(</span>类似<span> word </span>的文字编辑器<span>) </span>与<span> SlideRocket(</span>类似<span> powerpoint </span>的简单软件<span>) </span>应该是当今<span> RIA </span>业界最俱代表性与杀伤力的两支<span>app</span>，它们几乎有撼动<span> Office </span>市场的能力，因此<span> adobe </span>对它们的重视与关爱可说是其来有自，亳不奇怪。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">比较值得观察的将是，迟早<span> Adobe </span>手上会有<span> word, powerpoint </span>与<span> excel </span>兼容的软件<span>(</span>当然是<span> built with Flex/AIR)</span>，届时世界上只有四间主流商业公司有成熟的<span> office </span>产品<span>(OO.o </span>这种就先不算进来，呃，好，其实还有<span> IBM Lotus Symphony</span>，不过知名度不高也先放一边<span>)</span></span></span></span><span><span style="font-size: small; font-family: 宋体;">-Microsoft: Office </span></span><span><span style="font-size: small; font-family: 宋体;">的霸主地位无庸置疑，</span><span style="font-size: small;"><span style="font-family: 宋体;"><span>runs on desktop only<br />
-Apple: Mac </span>上的<span> Office </span>霸主</span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>, runs on desktop only<br />
-Google: Doc </span>系列产品，算是目前<span> web-based </span>里最成熟的一家</span></span><span><br />
<span style="font-size: small; font-family: 宋体;">-Adobe: </span></span><span style="font-size: small;"><span style="font-family: 宋体;">同样为<span> web-based, </span>但因为采用<span> flash </span>制作，因此操作接口与功能将明显超越<span> google docs (</span>与其它<span> ajax </span>系列的<span> office-apps)</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">而其中只有<span> google </span>与<span> adobe </span>已经很积极在<span> web-based </span>这块深耕<span>(MS</span>的<span> office live </span>则还未成熟<span>)</span>，从趋势来看<span>(on-line, access everywhere, collaboration, messaging)</span>，<span>web</span>式的产品前途是比较看好的，而从技术面来看，<span>flash</span>式的<span> web app </span>往往又比<span> ajax </span>式的好一点<span>(</span>至少在<span> tool </span>级这个领域<span>)</span>，所以<span> adobe </span>可以说是已经站在比较有利的<span> position</span>，这是很有趣也值得观察的事<span>(</span>而且要睁大眼睛好好看着<span>)</span>。</span></span></span></p>
<p></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"></span></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span><strong>10. Flash CS4 </strong></span><span><strong>与</strong><span><strong> Fireworks</strong> </span></span></span></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span><span>CS4</span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>Flash </span><span>部份有许多不错的新功能，例如可在<span> authoring time live preview video content</span>，<span>timeline </span>大改良<span>, tween </span>方式更自由，以及神奇的<span> IK </span>效果，我想对能掌握这些新东西的多媒体设计师来说，这应该是非常棒的消息。</span></span></span><span style="font-size: small;"><span style="font-family: 宋体;"><span>Fireworks </span><span>部份则是强调与<span> flex </span>的整合，例如可在<span> fireworks </span>里制作组件与<span>style/skin </span>然后直接输出有<span> scale-9 </span>的<span> swc </span>给<span> flex </span>用，基本上都还是很粗浅的整合尝试，未来<span>12</span>个月还要多努力。</span></span></span></p>
<p><span style="font-size: small;"></span></p>
<p><span style="font-size: small;"></span><span style="font-size: small;"><strong><span style="font-family: 宋体;">总结</span></strong></span></p>
<p><span style="font-size: small;"><strong></strong></span><span><span style="font-size: small;"><span style="font-family: 宋体;">综观以上<span> highlight </span>出来的<span> 10</span>点，如果你仔细去推敲每一点背后所代表的意义，并思考它们未来可能的影响力与冲击效应，或许你会像我一样觉得全身发热心跳加快。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">基本上观察这次<span> Max </span>揭露的消息，感觉很像在看高手对弈，当你看到局中一步棋时，就知道胜负已定，未来所有的步数皆已确定，结果只是时间问题，而更令人惊讶的是，往往这致胜的一步是如此的不明显与不经意，轻轻的滑过就决定了未来，这才是真正让人自叹弗如的地方。</span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;">想到这里，只能说这真的是一个<span> exciting times</span>，很高兴能置身其中、亲自经历而不是在十年后回头来赞叹当年。</span></span></span><span><span style="font-size: small; font-family: Times New Roman;"> <br />
</span></span></p>
</div>
<img src ="http://www.blogjava.net/gembin/aggbug/230871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-24 14:21 <a href="http://www.blogjava.net/gembin/archive/2008/09/24/230871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>  Flex Shared Object</title><link>http://www.blogjava.net/gembin/archive/2008/09/23/230662.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Tue, 23 Sep 2008 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/23/230662.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/230662.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/23/230662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/230662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/230662.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SharedObject&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/23/230662.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/230662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-23 14:15 <a href="http://www.blogjava.net/gembin/archive/2008/09/23/230662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Memory Profile of MXML vs AS3 for ItemRenderers</title><link>http://www.blogjava.net/gembin/archive/2008/09/18/229667.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Thu, 18 Sep 2008 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/18/229667.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/229667.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/18/229667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/229667.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/229667.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Memory Profile of MXML vs AS3 for ItemRenderers&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/18/229667.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/229667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-18 13:33 <a href="http://www.blogjava.net/gembin/archive/2008/09/18/229667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Book: Learning Flex 3: Getting up to Speed with Rich Internet Applications</title><link>http://www.blogjava.net/gembin/archive/2008/09/10/228130.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 10 Sep 2008 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/10/228130.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/228130.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/10/228130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/228130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/228130.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Book: Learning Flex 3: Getting up to Speed with Rich Internet Applications&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/10/228130.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/228130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-10 13:31 <a href="http://www.blogjava.net/gembin/archive/2008/09/10/228130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 3 Compiler Design(from adobe)</title><link>http://www.blogjava.net/gembin/archive/2008/09/10/228089.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 10 Sep 2008 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/10/228089.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/228089.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/10/228089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/228089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/228089.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Flex 3 Compiler &nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/10/228089.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/228089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-10 11:01 <a href="http://www.blogjava.net/gembin/archive/2008/09/10/228089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>14 Papervision 3D samples</title><link>http://www.blogjava.net/gembin/archive/2008/09/10/228078.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 10 Sep 2008 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/10/228078.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/228078.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/10/228078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/228078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/228078.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Papervision 3D samples&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/10/228078.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/228078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-10 10:17 <a href="http://www.blogjava.net/gembin/archive/2008/09/10/228078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActionScript 3 opensource Libs</title><link>http://www.blogjava.net/gembin/archive/2008/09/10/228076.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 10 Sep 2008 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/10/228076.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/228076.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/10/228076.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/228076.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/228076.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ActionScript 3 libs&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/10/228076.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/228076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-10 10:16 <a href="http://www.blogjava.net/gembin/archive/2008/09/10/228076.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActionScript 3.0 Game Programming University</title><link>http://www.blogjava.net/gembin/archive/2008/09/05/227208.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Fri, 05 Sep 2008 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/05/227208.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/227208.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/05/227208.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/227208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/227208.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ActionScript 3.0 Game Programming University&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/05/227208.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/227208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-05 14:17 <a href="http://www.blogjava.net/gembin/archive/2008/09/05/227208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>List of 33 Flex APIs, Libraries, Components and Tools</title><link>http://www.blogjava.net/gembin/archive/2008/09/05/227204.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Fri, 05 Sep 2008 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/09/05/227204.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/227204.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/09/05/227204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/227204.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/227204.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: List of 33 Flex APIs, Libraries, Components and Tools&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/09/05/227204.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/227204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-09-05 14:03 <a href="http://www.blogjava.net/gembin/archive/2008/09/05/227204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Builder and AsWing Quick Start</title><link>http://www.blogjava.net/gembin/archive/2008/08/13/221729.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 13 Aug 2008 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/08/13/221729.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/221729.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/08/13/221729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/221729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/221729.html</trackback:ping><description><![CDATA[This tutorial actually shows you how to install the Flex Builder and
the AsWing. What you will learn in doing this procedure will carry over
into your new projects using other new library components(such as <a target="_blank" href="http://code.google.com/p/as3corelib/">as3corelib</a>).It&#8217;s also explain how to install and use subclipse( SVN pulg-in for Eclipse ) to checkout fresh code.
<table>
    <tbody>
        <tr>
            <td>
            <p align="center"><font size="5" color="#000000">Catalog</font></p>
            <p><strong>Basic Part:</strong><br />
            1 Download and install Flex Builder(the standalone version)</p>
            <blockquote>
            <p>1.1 Download Flex Builder2.0<br />
            1.2 Stratup Flex Builder</p>
            </blockquote>
            <p>2 Download and install AsWing</p>
            <blockquote>
            <p>2.1 Downlaod AsWingA3<br />
            2.2 Import AsWing project<br />
            2.3 Clean to Build</p>
            </blockquote>
            <p>3 Create,Compile,Run a Application that use AsWing components.</p>
            <blockquote>
            <p>3.1 Create a new ActionScript Project<br />
            3.2 Run the application</p>
            </blockquote>
            <p><strong>Advanced Part:</strong><br />
            4 Install Flex Builder as a plugin of Eclipse.</p>
            <blockquote>
            <p>4.1 Download and install JDK1.5<br />
            4.2 Download and install Eclpse3.2<br />
            4.3 Install Flex Builder pulgin</p>
            </blockquote>
            <p>5 Checkout AsWing from SVN</p>
            <blockquote>
            <p>5.1 Install SVN plugin for Eclipse<br />
            5.2 Checkout fresh source code</p>
            </blockquote>
            </td>
        </tr>
    </tbody>
</table>
<p></p>
<hr />
<font size="4" color="#8c63a4">1 Download and install Flex Builder(the standalone version)</font>
<blockquote>
<p><font size="4" color="#00ae72">1.1 Download <a target="_blank" href="http://www.adobe.com/cfusion/tdrc/index.cfm?product=flex&amp;loc=en%5Fus">Flex Builder2.0</a></font></p>
</blockquote>
<p>In Basic Part, we selecte download &#8220;Flex Builder 2 (English|Windows|168.78 MB)&#8221;;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image001.gif" title="download flex builder"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image001.gif" alt="download flex builder" /></a></p>
<p>Double click the file you hava downloaded which name like &#8220;FLXB_2.0_Win_WWE.exe<br />
select &#8220;Flex Builder and Flex SDK&#8221;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image003.gif" title="select flex builder and flex sdk"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image003.gif" alt="select flex builder and flex sdk" /></a>Select a folder to install Flex Builder.I change to &#8220;G:\Flex\Flex Builder 2&#8221;.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image005.gif" title="Select a folder to install Flex Builder"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image005.gif" alt="Select a folder to install Flex Builder" /></a></p>
<p>Installing&#8230;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image007.gif" title="Installing"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image007.gif" alt="Installing" /></a></p>
<p>Flex Builder is installed Complete.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image009.gif" title="installed Complete"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image009.gif" alt="installed Complete" /></a></p>
<blockquote>
<p><font size="4" color="#00ae72">1.2 Stratup Flex Builder.</font></p>
</blockquote>
<p>After Download and Install Flex Builder, we can select Start -&gt;
All Programs -&gt; Adobe -&gt; Adobe Flex Builder 2 to open Flex
Builder.<br />
The Flex Builder is starting, it&#8217;s version is 2.0.1.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image011.gif" title="Flex Builder is starting"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image011.gif" alt="Flex Builder is starting" /></a></p>
<p>The main window of Flex Builder.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image013.gif" title="The main window of Flex Builder"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image013.gif" alt="The main window of Flex Builder" /></a></p>
<hr />
<font size="4" color="#8c63a4">2 Download and install AsWing</font>
<blockquote>
<p><font size="4" color="#00ae72">2.1 Downlaod AsWingA3</font></p>
</blockquote>
<p>At the beginning,we download packaged version of AsWing at <a target="_blank" href="http://code.google.com/p/aswing/downloads/list">Here</a>.<br />
Selecte &#8220;AsWing A3 0.8&#8221;(it will change when you visit this page).
Remember to choose AsWing A3 series which is base ActionScript 3.The
downloaded file name is &#8220;aswing_a3_0_8.zip&#8221;.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image015.gif" title="Downlaod AsWingA3"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image015.gif" alt="Downlaod AsWingA3" /></a></p>
<p>Change default Workspace to &#8220;G:\acode&#8221;, Flex Builder will restart automatic.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image017.gif" title="Change default Workspace"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image017.gif" alt="Change default Workspace" /></a></p>
<p>Choose a folder as workspace of Flex Builder.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image019.gif" title="Choose a folder as workspace"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image019.gif" alt="Choose a folder as workspace" /></a></p>
<p>Create a &#8220;Flex Library Project&#8221; with name &#8221;AsWingA3&#8221;.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image021.gif" title="Create a &#8220;Flex Library Project&#8221;"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image021.gif" alt="Create a &#8220;Flex Library Project&#8221;" /></a></p>
<blockquote>
<p><font size="4" color="#00ae72">2.2 Import AsWing project.</font></p>
</blockquote>
<p>Unpack the &#8220;aswing_a3_0_8.zip&#8221; to somewhere. Right-Click on project &#8220;AsWingA3&#8243; select &#8220;Import&#8221;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image025.gif" title="select &#8220;Import&#8221;"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image025.gif" alt="select &#8220;Import&#8221;" /></a></p>
<p>Select import form &#8220;File System&#8221;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image027.gif" title="Select import form &#8220;File System&#8221;"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image027.gif" alt="Select import form &#8220;File System&#8221;" /></a></p>
<p>Select the location you unpacked,<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image029.gif" title="Select the location you unpacked"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image029.gif" alt="Select the location you unpacked" /></a></p>
<p>Select into folder, it&#8217;s &#8220;AsWingA3&#8243;.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image031.gif" title="Select into folder"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image031.gif" alt="Select into folder" /></a></p>
<p>Some Properities setup<br />
Right click on the AsWingA3 project, select &#8220;Properities&#8221; at the bottom.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image033.gif" title="select &#8220;Properities&#8221; at the bottom"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image033.gif" alt="select &#8220;Properities&#8221; at the bottom" /></a></p>
<p>Change to &#8220;Flex Build Path&#8221;, check the &#8220;src&#8221; folder and ,fill &#8220;src&#8221; in &#8220;Main sorce folder&#8221;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image035.gif" title="Change to &#8220;Flex Build Path&#8221;,"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image035.gif" alt="Change to &#8220;Flex Build Path&#8221;," /></a></p>
<p>Select &#8220;Flex Library Complier&#8221; , Uncheck the &#8220;Enable warnings&#8221;,<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image037.gif" title="Select &#8220;Flex Library Complier&#8221;"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image037.gif" alt="Select &#8220;Flex Library Complier&#8221;" /></a></p>
<blockquote>
<p><font size="4" color="#00ae72">2.3 Clean to Build</font></p>
</blockquote>
<p>Select &#8220;Project&#8221; -&gt; &#8220;Clean&#8230;&#8221;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image040.gif" title="Select &#8220;Project&#8221; -&gt; &#8220;Clean&#8230;&#8221;"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image040.gif" alt="Select &#8220;Project&#8221; -&gt; &#8220;Clean&#8230;&#8221;" /></a></p>
<p>Check the projects yout want to clean and rebuild.Press &#8220;OK&#8221; button.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image041.gif" title="clean and rebuild."><img src="http://www.aswing.org/wp-content/uploads/2007/04/image041.gif" alt="clean and rebuild." /></a></p>
<p>Building project will take you about one minute.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image043.gif" title="Building project"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image043.gif" alt="Building project" /></a></p>
<p>After build project, a new library file(AsWingA3.swc) is created.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image045.gif" title="a new library file(AsWingA3.swc) is created"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image045.gif" alt="a new library file(AsWingA3.swc) is created" /></a></p>
<hr />
<font size="4" color="#8c63a4">3 Create,Compile,Run a Application that use AsWing components.</font>
<blockquote>
<p><font size="4" color="#00ae72">3.1 Create a new ActionScript Project with project name &#8220;AsWingExamples&#8221;.</font></p>
</blockquote>
<p><a href="http://www.aswing.org/wp-content/uploads/2007/04/image046.gif" title="Create a new ActionScript Project"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image046.gif" alt="Create a new ActionScript Project" /></a></p>
<p>Fill AsWingExamples in &#8220;Project name&#8221; ,click Finish button.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image048.gif" title="Fill AsWingExamples in &#8220;Project name&#8221;"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image048.gif" alt="Fill AsWingExamples in &#8220;Project name&#8221;" /></a></p>
<p>Create a Source Code Forlder with name &#8220;src&#8221;,<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image050.gif" title="Create a Source Code Forlder with name &#8220;src&#8221;,"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image050.gif" alt="Create a Source Code Forlder with name &#8220;src&#8221;," /></a><br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image052.gif" title="fill src"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image052.gif" alt="fill src" /></a></p>
<p>Open Properities pane, select &#8220;ActionScript Build Path&#8221;-&gt;&#8221;Source path&#8221;,fill &#8220;src&#8221; in &#8220;Main sorce folder&#8221;<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image0331.gif" title="select &#8220;ActionScript Build Path"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image0331.gif" alt="select &#8220;ActionScript Build Path" /></a><br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image054.gif" title="select &#8220;ActionScript Build Path&#8221;2"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image054.gif" alt="select &#8220;ActionScript Build Path&#8221;2" /></a></p>
<p>Change to &#8220;Library path&#8221;,click &#8220;Add Project&#8221; button,<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image056.gif" title="Change to &#8220;Library path&#8221;,"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image056.gif" alt="Change to &#8220;Library path&#8221;," /></a></p>
<p>select &#8220;AsWingA3&#8221; as a library.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image058.gif" title="select &#8220;AsWingA3&#8221; as a library."><img src="http://www.aswing.org/wp-content/uploads/2007/04/image058.gif" alt="select &#8220;AsWingA3&#8221; as a library." /></a></p>
<p>Create a ActionScript Class with name &#8220;Test&#8221;, copy the code into it:<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image061.gif" title="Create a ActionScript Class"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image061.gif" alt="Create a ActionScript Class" /></a><br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image063.gif" title="new class"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image063.gif" alt="new class" /></a></p>
<p><strong>Source code of Test.as</strong><code></code></p>
<hr />
package<br />
{<br />
&nbsp;import flash.display.Sprite;<br />
&nbsp;import flash.display.StageScaleMode;
<p><code>import org.aswing.AsWingManager;<br />
&nbsp;import org.aswing.JFrame;<br />
&nbsp;import org.aswing.JLabel;<br />
&nbsp;import org.aswing.event.AWEvent;<br />
&nbsp;import org.aswing.geom.IntDimension;public class Test extends Sprite<br />
&nbsp;{<br />
&nbsp; public function Test(){<br />
&nbsp; super();<br />
&nbsp; stage.scaleMode = StageScaleMode.NO_SCALE;<br />
&nbsp; stage.stageFocusRect = false;<br />
&nbsp; AsWingManager.setRoot( this );createFrame();<br />
&nbsp; }</code><code>private function createFrame() : JFrame{<br />
&nbsp; var frame : JFrame = new JFrame( this, "Test of AsWingA3" );<br />
&nbsp; frame.getContentPane().append(new JLabel( "Hello world!" ));<br />
&nbsp; frame.setSize(new IntDimension( 200, 120 ) );<br />
&nbsp; frame.show();<br />
&nbsp; return frame;<br />
&nbsp; }<br />
&nbsp;}<br />
}</code><code><br />
</code></p>
<hr />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image065.gif" title="Source code of Test.as"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image065.gif" alt="Source code of Test.as" /></a>Select &#8220;ActionScript Applications&#8221;,click &#8220;Remove&#8221; button to delete &#8220;AsWingExamples.as(deleted)&#8221;,<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image067.gif" title="Remove"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image067.gif" alt="Remove" /></a>then press &#8220;Add&#8221; button, select &#8220;Test.as&#8221;,<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image069.gif" title="Add"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image069.gif" alt="Add" /></a>press &#8220;Set as Default&#8221; to set &#8220;Test.as&#8221; as the default Main Class.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image071.gif" title="the default Main Class"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image071.gif" alt="the default Main Class" /></a>You&#8217;ll find the icon of &#8220;Test.as&#8221; is changed to which mean Main Class.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image074.gif" title="find the icon"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image074.gif" alt="find the icon" /></a>
<blockquote>
<p><font size="4" color="#00ae72">3.2 Run the application</font></p>
</blockquote>
<p>At the end, press the green &#8220;Run&#8221; button at ToolBar, select &#8220;Test&#8221;,<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image075.gif" title="Run"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image075.gif" alt="Run" /></a></p>
<p>wait a second, a html page is popup with our first ActionScript application.<br />
<a href="http://www.aswing.org/wp-content/uploads/2007/04/image076.gif" title="a html page is popup"><img src="http://www.aswing.org/wp-content/uploads/2007/04/image076.gif" alt="a html page is popup" /></a></p>
<hr />
<font size="4" color="#8c63a4">4 Install Flex Builder as a plugin of Eclipse.</font>
<img src ="http://www.blogjava.net/gembin/aggbug/221729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-08-13 15:28 <a href="http://www.blogjava.net/gembin/archive/2008/08/13/221729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AsWing布局管理器入门</title><link>http://www.blogjava.net/gembin/archive/2008/08/11/221360.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Mon, 11 Aug 2008 10:38:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/08/11/221360.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/221360.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/08/11/221360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/221360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/221360.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: AsWing布局管理器入门&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/08/11/221360.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/221360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-08-11 18:38 <a href="http://www.blogjava.net/gembin/archive/2008/08/11/221360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AsWing 入门</title><link>http://www.blogjava.net/gembin/archive/2008/08/11/221359.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Mon, 11 Aug 2008 10:36:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/08/11/221359.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/221359.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/08/11/221359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/221359.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/221359.html</trackback:ping><description><![CDATA[<h2>ActionScript3.0简介</h2>
<p>ActionScript3.0 是Adobe公司为基于flash player 平台开发的一种脚本语言，开发者可以使用其开发出基于flash player运行的多媒体应用程序。<br />
</p>
<h2>为什么选择AsWing 以及 AsWing</h2>
<p>请参考，《AsWing介绍文档》。</p>
<h2>环境准备</h2>
<p>说白了AsWing就是一套用AS3写成的类库，所以只要有编译AS3程序的环境，就能使用AsWing。</p>
<p>从编译环境来说基本就是2种，一个是Flash CS3，另一个就是 flex sdk。开发工具就很多了，官方的有
FlashCS3，Flex Builder(推荐用FB3)，或者使用开源的FlashDevelop（支持使用flash和flex
sdk编译），甚至手动调用mxmlc编译。</p>
<p>有了开发环境，那么我们就要下载AsWing开发包，并且配置我们的开发工具。</p>
<p>可以到 <a href="http://code.google.com/p/aswing/downloads/list" id="z236" title="http://code.google.com/p/aswing/downloads/list" target="_blank">http://code.google.com/p/aswing/downloads/list</a> 下载AsWing开发包。</p>
<p>找到 aswing_a3_1.2_fx.zip 或 aswing_a3_1.2_fl.zip 其中 1.2
表示版本号，一般下载最新的就行。后面的 fx 或 fl 代表适合的编译环境。一般如果用flex
sdk的话就下载fx结尾的包。用flashCS3的话就下载fl结尾的。</p>
<p>当然你也可以通过svn客户端取出最新的AsWing代码，具体方法就不再赘述了，svn地址见：<a href="http://www.aswing.org/?page_id=4" id="iwc5" title="http://www.aswing.org/?page_id=4" target="_blank">http://www.aswing.org/?page_id=4</a> 。</p>
<p>下面具体介绍下在FlexBuilder3和FlashCS3中的配置方法。其他工具雷同。本人使用Windows操作系统，其他系统下的操作方式基本一致。</p>
<ul>
    <li><strong>FlexBuilder3</strong>:<br />
    将压缩包解压后，找到里面的aswing_a3_1.2.zip，解压，将 AsWingA3/bin 目录中的 AsWingA3.swc
    复制到你存放AS代码库的目录。比如我将其放在 E:/AS3
    目录中。然后再FB3中新建一个ActionScript项目，右键该项目打开项目属性窗口，选择ActionScript Build
    Path，然后切换到 Library path，点击 Add SWC&#8230; 浏览到刚才复制的那个文件，按照我刚才存放的路径就是
    E:/AS3/AsWingA3.swc，然后点击OK即可。</li>
    <li><strong>Flash CS3<br />
    </strong>同样先解压然后找到aswing_a3_1.2.zip并解压，由于Flash IDE不支持使用纯AS打包的SWC作为编译库路径，所以我们先将AsWingA3整个目录复制到所需位置，如 E:/AS3。<br />
    然 后打开Flash CS3，点击菜单栏中的 编辑 并打开 首选参数窗口点击左边列表中的ActionScript，然后点下方的
    ActionScript 3.0 设置&#8230; 打开类路径设置窗口，将AsWing的src目录添加进去，按照我的文件路径就是将
    E:\AS3\AsWingA3\src 这个路径添加进去，然后点确定就可以了。</li>
</ul>
<p>P.S.当然FB3也可以使用目录作为编译路径，就是在Library path 旁的 Source path中添加一个 AsWing的src目录。</p>
<h2>第一个例子-Hello World！</h2>
<p>FB中在刚才建的ActionScript项目中新建一个ActionScript class文件，输入下面的代码。</p>
<pre>package {<br />
import flash.display.Sprite;<br />
<br />
import org.aswing.AsWingManager;<br />
import org.aswing.FlowLayout;<br />
import org.aswing.JButton;<br />
import org.aswing.JFrame;<br />
import org.aswing.JOptionPane;<br />
import org.aswing.event.AWEvent;<br />
<br />
public class HelloAsWing extends Sprite {<br />
<br />
private var myFrame:JFrame;<br />
private var myButton:JButton;<br />
<br />
public function HelloAsWing() {<br />
AsWingManager.initAsStandard(this);<br />
<br />
myButton = new JButton("Click Me");<br />
myButton.addActionListener(__buttonClicked);<br />
<br />
myFrame = new JFrame(this, "My Frame");<br />
myFrame.getContentPane().setLayout(new FlowLayout());<br />
myFrame.getContentPane().append(myButton);<br />
<br />
myFrame.setSizeWH(300, 200);<br />
myFrame.show();<br />
}<br />
<br />
private function __buttonClicked(e:AWEvent):void {<br />
JOptionPane.showMessageDialog("Hello", "Hello, World!");<br />
}<br />
}<br />
}<br />
</pre>
<p>如果是使用Flash
CS3，可以先新建一个ActionScript文件，输入代码后，保存为HelloAsWing.as，然后新建一个Flash
(ActionScript3.0)文件，将该fla文件保存在与HelloAsWing.as的同一级目录中，然后将fla的文档类设置为
HelloAsWing。</p>
<p>运行后可以看到类似这样的界面，你可以试着对该窗口进行各种操作：<code><br />
</code></p>
<p id="w55s" style="padding: 1em 0pt; text-align: left;">    <img src="http://docs.google.com/File?id=ajcxpgf2htnn_32gpnbf7cs" style="width: 516px; height: 431px;"  alt="" /></p>
<p>    点击 Click Me 按钮后，会弹出一个提示窗口，如下图：</p>
<p id="sysk" style="padding: 1em 0pt; text-align: left;">&nbsp;</p>
<p id="wo8q" style="padding: 1em 0pt; text-align: left;">    <img src="http://docs.google.com/File?id=ajcxpgf2htnn_34fr2r9bgr" style="width: 516px; height: 431px;"  alt="" /></p>
<p>这就是使用AsWing创建UI组件的一个非常简单的实例程序，下面我们简单分析一下该程序的代码。<code><br />
</code></p>
<h2>实例详细分析</h2>
<p>使用AsWing，主程序不需要基于任何应用程序框架，AsWing的UI组件都从flash原生的Sprite扩展而来，所以几乎每一个AsWing组件都能被单独放到DisplayObjectContainer中并能正常使用。<br />
我们的主程序仅需继承Sprite即可，下面分析一下构造函数中的代码。</p>
<blockquote>
<p><code>AsWingManager.initAsStandard(this);</code></p>
</blockquote>
<p>建议在使用AsWing程序之前先调用这个方法，该方法封装了一些常用功能，调用了<code>AsWingManager</code>的setRoot方法，用于设置容纳AsWing组件的容器，这里的this就代表了当前AsWing组件的root。另外还会设置一些系统参数，如 align，scaleMode等。</p>
<blockquote>
<p><code>myButton = new JButton("Click Me");<br />
myButton.addActionListener(__buttonClicked);</code></p>
</blockquote>
<p>JButton 是AsWing中基本的按钮组件，这里新建了一个JButton实例，并设置按钮的Label，第二句代码给按钮添加一个事件监听，当点击按钮后就会触发，这里的<code>addActionListener</code>是AsWing设计成简化了事件监听的写法，当然也可以写成这样 <code>myButton.addEventListener(AWEvent.ACT, </code><code>__buttonClicked);。<br />
AwEvent</code>是AsWing中最基本的事件类，ACT事件类型表示一些基本组件的触发事件类型，如JButton的鼠标点击事件，JTextField的回车事件等。这里按钮点击后就会执行 <code>__buttonClicked </code>事件处理函数，函数中代码稍后讨论。</p>
<blockquote>
<p><code>myFrame = new JFrame(this, "My Frame");<br />
myFrame.getContentPane().setLayout(new FlowLayout());<br />
myFrame.getContentPane().append(myButton);</code></p>
</blockquote>
<p>JFrame是常用的窗口组件，有类似操作系统窗口的基本特性，如最小/大化，关闭，缩放，拖动能功能。JFrame的第一个参数指示该窗口所在的容器，第二个参数设置窗口头部的label（即title）。<br />
<code>getContentPane()</code>方法获取JFrame容纳其他组件的容器，向JFrame中添加组件记得不要直接调用<code>JFrame</code>的<code>append</code>方法，JFrame 真正容纳其他组件的不是本身，而是其内部的一个容器，用<code>getContentPane()</code>方法获取<code>。<br />
</code>   每个容器排列组件的方式都由Layout控制，setLayout就是设置容器的布局方式，关于布局请参考《AsWing布局管理入门》。<br />
然后就是调用容器的append方法将刚才的按钮加入到JFrame的容器中。</p>
<blockquote>
<p><code>myFrame.setSizeWH(300, 200);<br />
myFrame.show();</code></p>
</blockquote>
<p>这两句代码就比较简单了，设置JFrame的尺寸，并让JFrame显示出来。可能你发现没有使用addChild方法，没关系，JFrame继承
JPopup，所有基于JPopup的组件，AsWing都会自动替你添加到DisplayList中，调用show() 方法就可以设置为可见。</p>
<p>下面看下很简单的事件处理函数</p>
<blockquote>
<p><code>private function __buttonClicked(e:AWEvent):void {<br />
JOptionPane.showMessageDialog("Hello", "Hello, World!");<br />
}</code></p>
</blockquote>
<p><code>JOptionPane</code>是一个类似Alert的组件，<code>showMessageDialog() </code>方法即显示一个消息框，第一个参数为消息框的title，第二个参数设置消息内容的字符。</p>
<h2>结束语</h2>
<p>如今基于flashplayer的RIA技术非常流行，要开发这样的应用程序就免不了会用到与用户交互的UI组件，AsWing正是这样一套强大的
组件
库，提供了常用的基本组件，开发者也可能很容易扩展出自己特制的组件。AsWing的灵活使得开发者不会被特定的条件约束，你可以在整个项目中完全使用
AsWing作为GUI交换组件，也可以仅把AsWing的某一个组件用在你的项目中，帮助你快速的得到所需的UI界面。<br />
AsWing的开发者还在不断的改进AsWing，使其更强大，易用。<br />
本文仅介绍了最基本的AsWing使用，其更多强大的性能正等着你来发掘，请参考其他AsWing相关教程。</p>
<h2>下载资源</h2>
<ul>
    <li>AsWing 下载列表 <a href="http://code.google.com/p/aswing/downloads/list" id="nstt" title="http://code.google.com/p/aswing/downloads/list" target="_blank">http://code.google.com/p/aswing/downloads/list</a></li>
    <li>官方下载页，包括svn代码库地址 <a href="http://www.aswing.org/?page_id=4" id="avbn" title="http://www.aswing.org/?page_id=4" target="_blank">http://www.aswing.org/?page_id=4</a></li>
</ul>
<h2>参考资料</h2>
<ul>
    <li>AsWing 官方网站 <a href="http://www.aswing.org/" id="vh3." title="http://www.aswing.org/" target="_blank">http://www.aswing.org/</a></li>
    <li>API 文档 <a href="http://doc.aswing.org/a3/" id="efpq" title="http://doc.aswing.org/a3/" target="_blank">http://doc.aswing.org/a3/</a></li>
    <li>案例展示 <a href="http://www.aswing.org/?page_id=7" id="ig6t" title="http://www.aswing.org/?page_id=7" target="_blank">http://www.aswing.org/?page_id=7</a></li>
</ul>
<img src ="http://www.blogjava.net/gembin/aggbug/221359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-08-11 18:36 <a href="http://www.blogjava.net/gembin/archive/2008/08/11/221359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AsWing 与 Java 之间的交互</title><link>http://www.blogjava.net/gembin/archive/2008/08/11/221358.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Mon, 11 Aug 2008 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/08/11/221358.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/221358.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/08/11/221358.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/221358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/221358.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/08/11/221358.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/221358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-08-11 18:35 <a href="http://www.blogjava.net/gembin/archive/2008/08/11/221358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>