Currently Browsing: ActionScript 2 & 3

AS3与JavaScript进行交互[转]

1.JS调用AS3中的函数

首先,我们新建一个FLASH文档,然后在舞台上绘制一个动态文本,该文本的实例名称为wen_txt。好了!美工的部分就算完成了(我们这里是一个非常简单的实例,不要求太复杂。力求突出重点)!

现在,我们要在FLASH中建立一个允许被外部调用的函数。那么如何去建立声明这样一个函数呢?我们要使用到一个类,这个类的名字就是ExternalInterface。很多人都没有太注意过这个类。这个类实际上是在flash.external 包中。这个包是专门用来和外部容器进行通信的。那么对这个ExternalInterface类,它的官方解释是“ExternalInterface 类是外部 API,在 ActionScript 和 Flash Player 的容器之间实现直接通讯的应用程序编程接口,例如,含有 JavaScript 的 HTML 页。”很显然,这里已经提到了JS。好了!下面我们就来写一下脚本吧!

代码如下:
……
read more...

AS3加载外部SWF文件

在 ActionScript 3.0 中,SWF 文件是使用 Loader 类来加载的。若要加载外部 SWF 文件,
ActionScript 需要执行以下 4 个操作:

1. 用文件的 URL 创建一个新的 URLRequest 对象。
2. 创建一个新的 Loader 对象。
3. 调用 Loader 对象的 load() 方法,并以参数形式传递 URLRequest 实例。
4. 对显示对象容器 (如 Flash 文档的主时间轴)调用 addChild() 方法,将 Loader 实例添加到显示列表中。

示例代码:

1
2
3
4
5
var request:URLRequest = new URLRequest("http://design-studio.cn/
blog/wp-content/uploads/2010/02/generateur_avatars.swf");
var loader:Loader = new Loader();
loader.load(request);
addChild(loader);

【转载】AS3库资源很多非常有用的类库

1、as3ebaylib
http://code.google.com/p/as3ebaylib/

2、as3youtubelib
http://code.google.com/p/as3youtubelib/

3、as3flickrlib
http://code.google.com/p/as3flickrlib/

4、Yahoo ASTRA Flash Components
http://developer.yahoo.com/flash/astra-flash/

5、facebook-as3
http://code.google.com/p/facebook-as3/

6、as3awss3lib
http://code.google.com/p/as3awss3lib/
……
read more...

AS3学习-小结1

总结:调用库中MC,BTN,外部PIC,SWF,TXT,XML。简单AS3绘图,简单的变量调整。继续学习,继续加油…
示例代码下载
……
read more...

As3场景设置学习

[SWF(width="800", height="600", backgroundColor="#fffff", frameRate="31")] //定义场景
import flash.display.Stage;//表示场景类
import flash.display.StageScaleMode;//调整大小场景类,常用有NO_SCALE跟据场景大小来调整自适应大小
import flash.display.StageAlign;//调整对齐场景类
import flash.display.StageDisplayState//调整场景是否全屏
import flash.events.FullScreenEvent;//用于侦听”调整场景是否全屏”

StageScaleMode.EXACT_FIT 按比例缩放 SWF。
StageScaleMode.SHOW_ALL 确定是否显示边框(就像在标准电视上观看宽屏电影时显示的黑条)。
StageScaleMode.NO_BORDER 确定是否可以部分裁切内容。
StageScaleMode.NO_SCALE,则当查看者调整 Flash Player 窗口大小时,舞台内容将保持定义的大小。
swfStage.addEventListener(Event.RESIZE, resizeDisplay);
mySprite.stage.displayState = StageDisplayState.FULL_SCREEN;//全屏
mySprite.stage.displayState = StageDisplayState.NORMAL;//退出全屏
mySprite.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);
swfStage.align = StageAlign.TOP_LEFT;//左上角对齐
swfStage.align = StageAlign.TOP_RIGHT;//右上角对齐
swfStage.align = StageAlign.TOP;//顶对齐
swfStage.align = StageAlign.RIGHT;//右对齐
swfStage.align = StageAlign.LEFT;//左对齐
swfStage.align = StageAlign.BOTTOM;//底对齐
swfStage.align = StageAlign.BOTTOM_LEFT;//左下角对齐
swfStage.align = StageAlign.BOTTOM_RIGHT;//右下角对齐

示例代码:
……
read more...

AS3简单遮罩效果

下面的例子演示遮罩跟随鼠标移动。通过载入的图片指定遮罩,该遮罩跟着鼠标移动:

1
2
3
4
5
6
7
8
9
10
11
var loader:Loader = new Loader(   );
loader.load(new URLRequest("image.jpg"));
addChild(loader);
var maskSprite:Sprite = new Sprite(   );
maskSprite.graphics.lineStyle(   );
maskSprite.graphics.beginFill(0xFFFFFF);
maskSprite.graphics.drawCircle(0, 0, 50);
maskSprite.graphics.endFill(   );
loader.mask = maskSprite;
addChild(maskSprite);
maskSprite.startDrag(true);

图片填充圆

下面的例子通过URL载入位图,拷贝到BitmapData对象上,使用BitmapData对象填充圆:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package {
	import flash.display.Sprite;
	import flash.geom.Matrix;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.display.BitmapData;
	import flash.events.Event;
	public class Drawing extends Sprite {
		private var _loader:Loader;
		public function Drawing(   ) {
			_loader = new Loader(   );
			_loader.load(new URLRequest("image.jpg"));
			_loader.contentLoaderInfo.addEventListener
(Event.COMPLETE, onImageLoad);
		}
		private function onImageLoad(event:Event):void {
			var bitmap:BitmapData = new BitmapData
(_loader.width, _loader.height);
			bitmap.draw(_loader, new Matrix(   ));
			var matrix:Matrix = new Matrix(   );
			matrix.scale(.1, .1);
			var sampleSprite:Sprite = new Sprite(   );
			sampleSprite.graphics.lineStyle(   );
			sampleSprite.graphics.beginBitmapFill(bitmap, matrix);
			sampleSprite.graphics.drawCircle(100, 100, 100);
			sampleSprite.graphics.endFill(   );
			addChild(sampleSprite);
		}
	}
}

下载示例代码

as3鼠标行为-拖动

下面的代码使用这些方法建立了简单的拖动效果。有三个不同颜色的矩形,右边有个白色的矩形作为拖动的目标,当拖动左边的矩形到白色矩形上时,松开鼠标,白色矩形就会i改变相应颜色。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package {
	import flash.display.Sprite;
	import flash.display.DisplayObject;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.filters.DropShadowFilter;
	public class ColorDrop extends Sprite {
		private var _red:Sprite;
		private var _green:Sprite;
		private var _blue:Sprite;
		private var _white:Sprite;
		//  保存被拖动对象原始坐标
		private var startingLocation:Point;
		//  创建矩形和添加事件
		public function ColorDrop(   ) {
			createRectangles(   );
			addEventListeners(   );
		}
		private function createRectangles(   ):void {
			_red = new Sprite(   );
			_red.graphics.beginFill( 0xFF0000 );
			_red.graphics.drawRect( 0, 10, 10, 10 );
			_red.graphics.endFill(   );
			_green = new Sprite(   );
			_green.graphics.beginFill( 0x00FF00 );
			_green.graphics.drawRect( 0, 30, 10, 10 );
			_green.graphics.endFill(   );
			_blue = new Sprite(   );
			_blue.graphics.beginFill( 0x0000FF );
			_blue.graphics.drawRect( 0, 50, 10, 10 );
			_blue.graphics.endFill(   );
			_white = new Sprite(   );
			_white.graphics.beginFill( 0xFFFFFF );
			_white.graphics.drawRect( 20, 10, 50, 50 );
			_white.graphics.endFill(   );
			addChild( _red );
			addChild( _green );
			addChild( _blue );
			addChild( _white );
		}
		private function addEventListeners(   ):void {
		  _red.addEventListener( MouseEvent.MOUSE_DOWN, pickup );
		  _red.addEventListener( MouseEvent.MOUSE_UP, place );
		  _green.addEventListener( MouseEvent.MOUSE_DOWN, pickup );
		  _green.addEventListener( MouseEvent.MOUSE_UP, place );
		  _blue.addEventListener( MouseEvent.MOUSE_DOWN, pickup );
		  _blue.addEventListener( MouseEvent.MOUSE_UP, place );
		}
		public function pickup( event:MouseEvent ):void {
		   //  保存原始坐标以便回位
		  startingLocation = new Point(   );
		   startingLocation.x = event.target.x;
		   startingLocation.y = event.target.y;
		   //开始拖动,给被拖动对象加上阴影
		   event.target.startDrag(   );
		   event.target.filters = [ new DropShadowFilter(   ) ];
		   //  把被拖动对象显示在最前面
		  setChildIndex( DisplayObject( event.target ), numChildren - 1 );
		}
		public function place( event:MouseEvent ):void {
			//  停止拖动,取消阴影效果
			event.target.stopDrag(   );
			event.target.filters = null;
			//  检测是否已经被拖动到白色矩形上
			if (event.target.dropTarget==_white) {
				//  设置颜色
				var color:uint;
				switch (event.target) {
					case _red :
						color = 0xFF0000;
						break;
					case _green :
						color = 0x00FF00;
						break;
					case _blue :
						color = 0x0000FF;
						break;
				}
				_white.graphics.clear(   );
				_white.graphics.beginFill( color );
				_white.graphics.drawRect( 20, 10, 50, 50 );
				_white.graphics.endFill(   );
			}
			//  把被拖动对象放回原位
			event.target.x = startingLocation.x;
			event.target.y = startingLocation.y;
		}
	}
}

示例代码下载

接收鼠标事件-画线

下面的完整例子通过一个绘图程序演示了各种鼠标事件,无论何时鼠标按下,绘图将立即开始,当移动鼠标,一条线跟着鼠标显示出来,当松开鼠标,绘图终止:

例子代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	public class DrawingDemo extends Sprite {
	    // Flag to indicate whether the mouse is in draw mode
	    private var _drawing:Boolean;
	   public function DrawingDemo(   ) {//  设置线条样式
		graphics.lineStyle( 2, 0xFF0000 );
		//  按住鼠标就绘图
		_drawing = false;
		//  监听鼠标事件
		stage.addEventListener( MouseEvent.MOUSE_DOWN, startDrawing );
		stage.addEventListener( MouseEvent.MOUSE_MOVE, draw );
		stage.addEventListener( MouseEvent.MOUSE_UP, stopDrawing );
		}
		public function startDrawing( event:MouseEvent ):void {
			//  绘制起点
			graphics.moveTo( mouseX, mouseY );
			_drawing = true;
		}
		public function draw( event:MouseEvent ):void {
			if (_drawing) {
				//  鼠标走到哪画到哪
				graphics.lineTo( mouseX, mouseY );
			}
		}
		public function stopDrawing( event:MouseEvent ):void {
			_drawing = false;
		}
	}
}

摘自:ActionScript 3.0 Cookbook

AS3动态载入外部图片

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package {
	import flash.display.*;
	import flash.net.URLRequest;
	public class LoaderExample extends Sprite {
		public function LoaderExample() {
			// 1.  创建Loader 类实例
			var loader:Loader=new Loader  ;
			// 2.  添加到可视化对象列表
			addChild(loader);
			// 3.  调用load(   )方法
			loader.load(new URLRequest("image.jpg"));
		}
	}
}
Page 1 of 41234»