ActionScript 3 鼠标事件使用AS3的简单绘图应用程序

package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;

	public class ExampleApplication extends Sprite{
		private var _sprite:Sprite;
				
		public function ExampleApplication(){
			_sprite = new Sprite();
			addChild(_sprite);
			_sprite.graphics.beginFill(0xFFFFFF);
			_sprite.graphics.drawRect(0, 0, 400, 400);
			_sprite.graphics.endFill();
			
			_sprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			_sprite.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
			
		}
		private function onMouseDown(event:MouseEvent):void{
			_sprite.graphics.lineStyle(1, 0, 1);
			_sprite.graphics.moveTo(mouseX, mouseY);
			_sprite.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
		}
		private function onMouseUp(event:MouseEvent):void{
			_sprite.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
		}
		private function onMouseMove(event:MouseEvent):void{
			_sprite.graphics.lineTo(mouseX, mouseY);
		}
	}
}

ActionScript 3 在AS3中嵌入字体 - 资产类

package
{
    public class Assets
    {
        [Embed(source='fonts/arial.ttf', 
            fontName='Arial', unicodeRange='U+0010-U+007F,U+00C4,U+00D6,U+00DC,U+00E4,U+00F6,U+00FC,U+00DF',
            mimeType='application/x-font-truetype')]
        public static var ArialBold:Class;
        [Embed(source='fonts/arialbold.ttf', 
            fontName='ArialBold', unicodeRange='U+0010-U+007F,U+00C4,U+00D6,U+00DC,U+00E4,U+00F6,U+00FC,U+00DF',
            mimeType='application/x-font-truetype')]
        public static var Arial:Class;
    }
}

ActionScript 3 AS3:Flickr Loader

/************************
Use this in your Flash file
************************/

var photoSetLoader :FlickrLoader = new FlickrLoader();
photoSetLoader.load( "flickrPhotoSetID" );
photoSetLoader.addEventListener( Event.COMPLETE, photoSetCompleteHandler, false, 0, true );
function photoSetCompleteHandler( e:Event ):void
{
	var flickrLoader:FlickrLoader = FlickrLoader( e.currentTarget );
		flickrLoader.removeEventListener( Event.COMPLETE, photoSetCompleteHandler );
	var totalImages:Number = flickrLoader.getImageData().length;
	var currentImage:uint = Math.floor( Math.random() * totalImages );
	trace( flickrLoader.getImageData() );
}

/************************
Place this is a file called FlickrLoader.as
************************/
package 
{
	import com.adobe.serialization.json.JSON;

	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.HTTPStatusEvent;
	import flash.events.IEventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	import flash.net.URLVariables;

	public class FlickrLoader extends EventDispatcher
	{
        private var _data:Array;

        private static const FLICKR_API:String = "FLICKR_API_KEY";

		public function FlickrLoader(target:IEventDispatcher=null)
		{
			super(target);
		}

        public function load( photoSetID:String ):void
        {

        	var urlVars:URLVariables = new URLVariables();
        		urlVars.method = "flickr.photosets.getPhotos";
        		urlVars.api_key = FLICKR_API;
        		urlVars.photoset_id = photoSetID;
        		urlVars.format = "json";

        	var urlRequest:URLRequest = new URLRequest();
        		urlRequest.url = "http://api.flickr.com/services/rest/";
        		urlRequest.method = URLRequestMethod.GET;
        		urlRequest.data = urlVars;

            var urlLoader:URLLoader = new URLLoader();
                urlLoader.addEventListener( Event.COMPLETE, onJSONLoaded );
                urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
                urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
                urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
                urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true);
                urlLoader.load( urlRequest );
        }

		private function onJSONLoaded( e:Event ):void
		{
	        _data = new Array();

	        var rawData = e.currentTarget.data as String;
			var data:String = rawData.slice( rawData.indexOf("{"), rawData.lastIndexOf("}") + 1 );
//			trace( data );
	        var json:Object = JSON.decode( data ) as Object;
	        var photos:Object = json.photoset.photo as Object;

        	//Create new image objects
	        for( var i:uint; i < photos.length; i++ ){
				_data.push({ 
					   "title" : photos[i].title.toString(), 
						"url" : "http://farm" + 
								photos[i].farm + 
								".static.flickr.com/" + 
								photos[i].server + "/" + 
								photos[i].id + "_" + 
								photos[i].secret + ".jpg" 
				   });
	        }

	        //Fire once the XML has been converted into Image Objects
	        dispatchEvent( new Event( Event.COMPLETE ) ); 
		}

		public function getImageData():Array
		{
		        return _data;
		}

		private function httpStatusHandler ( e:HTTPStatusEvent ):void
		{
		        //trace("httpStatusHandler:" + e);
		}

		private function securityErrorHandler ( e:SecurityErrorEvent ):void
		{
		        trace("securityErrorHandler:" + e);
		}

		private function ioErrorHandler( e:IOErrorEvent ):void
		{
		        trace("ioErrorHandler: " + e);
		}

		private function progressHandler( e:ProgressEvent ):void
		{
		        //trace(e.currentTarget.bytesLoaded + " / " + e.currentTarget.bytesTotal);
		}

	}
}

ActionScript 3 快速循环迭代

// fastest way to iterate through a loop
// - set var to :int
// - count down from desired loop count to zero
// - on each count we test the Boolean value of j (j<1 makes it false)
// - instead of counting down with j-- we use j += -1 because adding negative
//   numbers is faster than subtracting
//

for(var j:int=10; j; j += -1){}

ActionScript 3 AS3电子邮件验证

*/ syntax:
if (!isValidEmail("my_NON_email.com")) {
    trace("FAIL");
}
*/

private function isValidEmail(email:String):Boolean {
    var emailExpression:RegExp = /([a-z0-9._-]+?)@([a-z0-9.-]+)\.([a-z]{2,4})/;
    return emailExpression.test(email);
}

ActionScript 3 检查XML属性是否存在

Usage 1:

var hasAttribute:Boolean = node.hasOwnProperty("@myAttribute");


Usage 2:

var myList:XMLList = myXML.node.( hasOwnProperty( "@myAttribute" ) );


Usage 3:

if ("@myAttribute" in node) { ... }

ActionScript 3 随机化一个数组

for (var i:uint = 0; i < myArray.length; i++)
{
   var rand:uint = int(Math.random() * myArray.length);
   myArray.push( myArray.splice( rand, 1 )[0] );
}

ActionScript 3 ActionScript 3开始和停止拖动

package {
	import flash.display.Sprite;
	import flash.display.Shape;
	import flash.events.MouseEvent;
	
	
	public class DisplayList extends Sprite{
		
		private var _rectangle:Sprite;
			
		public function DisplayList(){
			_rectangle = new Sprite();
			_rectangle.graphics.lineStyle(0, 0xFFFFFF, 1);
			_rectangle.graphics.beginFill(0xFFFFFF, 1);
			_rectangle.graphics.drawRect(0, 0, 100, 50);
			addChild(_rectangle);
			_rectangle.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			_rectangle.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
			
			
		}
		private function onMouseDown(event:MouseEvent):void{
			_rectangle.startDrag();
		}
		
		private function onMouseUp(event:MouseEvent):void{
			_rectangle.stopDrag();
		}
		
	}
}

ActionScript 3 AS3:使用新的TextFormat()向TextInput组件添加样式

var tf:TextFormat = new TextFormat();
tf.size = 25;
tf.color = "#FEFEFE";
var ti:TextInput = new TextInput();
ti.x = 100;
ti.y = 100;
ti.width = 200;
ti.height = 30;
ti.htmlText = "<p>Snippler Rocks!</p>";
ti.setStyle("textFormat", tf);
addChild(ti);

ActionScript 3 AS3随机范围

private function randRange(minNum:Number, maxNum:Number):Number 
        {
            return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
        }