(完)
输出后都是undefined
也就是说都没有被调用这个处理方法,但是用onClipEvent(data){}是可以trace的,也就是说问题已经解决了。
可是问题又来了,如果在类里我们怎么办呢,就只能用MovieClip.onData了。但是又不能调用,和jiagao讨论了一下,他也遇到了相同的问题。
想了一下,琢磨了一个简单的变态方法。方法如下 :
var pages = this.mc.createEmptyMovieClip("pages",0);
pages._x = 2;
pages.onLoad = function(){
trace(this._width);
}
pages.onEnterFrame = function(){
if(this.onLoad!=undefined&&this.onData!=undefined){
trace(pages.onLoad);
trace(pages.onData);
delete this.onEnterFrame;
}
trace(111);
}
pages.onData = function(){
trace(this._width);
}这样就没问题了,如果你不嫌麻烦的话就写一个extends MovieClip也可以。
(完)
//首先我们要导入EventDispatcher
import mx.events.EventDispatcher;
class testEvent extends MovieClip{
function testEvent(){
//在构造函数中初始化
EventDispatcher.initialize(this);
}
//定义这三个方法
function dispatchEvent(){}
function addEventListener(){}
function removeEventListener(){}
function sendOK(){
//定义事件onSend
var eventObj1:Object = {target:this,type:"onSend"};
dispatchEvent(eventObj1);
trace("OK");
//定义事件onComplete
var eventObj2:Object = {target:this,type:"onComplete"};
dispatchEvent(eventObj2);
}
}
怎么用我们的事件呢?往下看!
新建一个FLA,输入以下代码:
大家还记得UI组建的事件处理函数么,对这个和UI组建的差不多,都是addEventListener和removoeEventListener。
var testObj:testEvent = new testEvent();
var eventObj1:Object = new Object();
eventObj1.onSend = function(obj){
trace("type:"+obj.type);
}
var eventObj2:Object = new Object();
eventObj2.onComplete = function(obj){
trace("type:"+obj.type);
}
testObj.addEventListener("onSend",eventObj1);
testObj.addEventListener("onComplete",eventObj2);
testObj.sendOK();
ok!去定义你的事件吧。
问题:创建两个位置大小颜色各不同的可拖拽的矩形。
方法一:method1.fla
//ActionScript 1.0
//Flash Player 6(含)以上
//ActionScript 1.0或ActionScript 2.0均可
createEmptyMovieClip ("rectangle1_mc", 1);
rectangle1_mc._x = 10;
rectangle1_mc._y = 10;
with (rectangle1_mc) {
beginFill (0xff0000, 100);
moveTo (0, 0);
lineTo (200, 0);
lineTo (200, 200);
lineTo (0, 200);
endFill ();
}
rectangle1_mc.onPress = startDrag;
rectangle1_mc.onRelease = rectangle1_mc.onReleaseOutside = stopDrag;
//
createEmptyMovieClip ("rectangle2_mc", 2);
rectangle2_mc._x = 50;
rectangle2_mc._y = 50;
with (rectangle2_mc) {
beginFill (0xffcc00, 100);
moveTo (0, 0);
lineTo (400, 0);
lineTo (400, 100);
lineTo (0, 100);
endFill ();
}
rectangle2_mc.onPress = startDrag;
rectangle2_mc.onRelease = rectangle2_mc.onReleaseOutside = stopDrag;方法二:method2.fla
//ActionScript 2.0
//Flash Player 6(含)以上
//必须为ActionScript 2.0
var rect1:Rectangle = new Rectangle (this, 10, 10, 200, 200, 0xff0000, 1);
var rect2:Rectangle = new Rectangle (this, 50, 50, 400, 100, 0xffcc00, 2);
delete rect1;
delete rect2;
delete Rectangle;
此方法必须得有一个Rectangle.as与之同路径。Rectangle.as内容如下:
class Rectangle extends MovieClip {
private var rectangle_mc:MovieClip;
public function Rectangle (target:Movi...
完整阅读本文...]]>
做好的成品如下:大家可以用鼠标将上面的图像碎片拖到下面的方框内的合适位置,为方便大家找位,游戏给出了有一定透明度的原图作为参考。大家可以发现这个游戏还设计了一个“吸附”功能,能够让你将拼图片轻松地整齐排列,同时游戏还会自动判断拼图是否全部正确完成。
制作步骤:
第一步:图片的准备工作
既然是拼图,当然首先就要有图片了,我找到的是一幅320*240象素的jpg图片,通过Fireworks将其切割成12块(每块80*80px),然后分别保存成12个jpg小图片备用,名称最好有一定规律,比如我将他们分别命名为pic1~pic12,当然你也可以利用其他图象处理工具来实现这一步。
第二步:建立Flash文件
打开今天的主角――Flash,通过菜单Modify Document...或Ctrl+J打开Document Properties面板(由于盗匪使用的是Flash
MX,一些快捷键可能与Flash 5的有所不同,不过盗匪会尽量给出Flash 5中相应的快捷键的,这个在Flash 5中的快捷键是Ctrl+M),将画面大小改为400*600px,其他可以保持默认值。
第三...
完整阅读本文...]]>
代码:
// create textfield
this.createTextField("txtField", this.getNextHighestDepth(), 10, 10, 300, 100);
txtField.html = true;
txtField.htmlText = "<font size='60'>Hello World!</font>";
txtField.textColor = 0x0055CC;
// set new antialias mode
txtField.antiAliasType = flash.text.TextRenderer.AntiAliasType.ADVANCED;
// create shadow filter
var dropShadow = new flash.filters.DropShadowFilter();
dropShadow.blurX = 5;
dropShadow.blurY = 5;
dropShadow.distance = 3;
dropShadow.angle = 35;
dropShadow.quality = 2;
dropShadow.alpha = 0.5;
// apply shadow filter
txtField.filters = [dropShadow];
7。按下ctrl+shift+f12,找开发布设置
完整阅读本文...]]>
今天的例子是最为简单的一个得到象素并复制到一个新对象中的操作,不过有了这个功能,位图操作的可能性就无限量了。
Flash代码:
import flash.display.*;
import flash.geom.*;
//导入本例所需要的二个Pageage
var sourceBD:BitmapData = BitmapData.loadBitmap(”mypic”);
//创建bitmapData对象以用于存放源图片,源图已在库中并命名为mypic
var mc:MovieClip = this.createEmptyMovieClip(”mc”, this.getNextHighestDepth());
mc._x = 25;
mc._y = 100;
mc.attachBitmap(sourceBD,mc.getNextHighestDepth());
//在Stage上创建空MC,并使用MC的attachBitmap方法将刚才创建的bitmapData对象读取到这个MC中
var targetBD:BitmapData = new BitmapData(230, 230, false, 111111);
//创建另一个bitmapData对象作为复制目标
var mc2:MovieClip = this.createEmptyMovieClip(”mc”, this.getNextHighestDepth());
mc2._x = 290;
mc2._y = 100;
mc2.attachBitmap(targetBD,mc.getNextHighestDepth());
//同样在Stage上创建空MC用于存放复制目标
mc.onRollOver = function() {
//当鼠标移动到拥有源图的MC上时,开始CopyPixels
copyPixels();
};
完整阅读本文...]]>
打开Flash 8,在Stage中导入要操作的图片,并为MC其命名为myPic_mc;
在第一帧上使用以下代码:
import flash.filters.BlurFilter;
//导入BlurFilter 的package
var myBlurfilter:BlurFilter = new BlurFilter(60, 60, 1);
/*
建立flash.filters.BlurFilter的实例,使用方法为
var myInstanceName: BlurFilter= new BlurFilter(blurX:Number, blurY:Number,
quality:Number);
blurX和blurY模糊值分别指的是画面横向和纵向的模糊强度,范围从1~100;
quality指的是模糊渲染的质量,范围从1~15,默认值为1质量较低,2质量居中,当为3时
质量接近Photoshop中的高斯模糊(Gaussian
blur),已属较高质量,在大多数应用当中使用1~3的值即可,太高将影响运算效率。
*/
var filterArray:Array = new Array();
filterArray.push(myBlurfilter);
//向filterArray数组新增一个滤镜对象
myPic_mc.filters = filterArray;
/*
在新版Flash 8中,movieClip Class已经增加新的方法filters用于应用滤镜对象,但
filters方法不直接接收滤镜对象,必须先将滤镜对象装入一个对象数组,再应用
于MovieClip,当然,装入对象数组后的滤镜对象也可以通过数组直接修改滤镜对象的属性,例如:
filterArray[0].blurX=10;
filterArra...
完整阅读本文...]]>
1.脚本助手—标准模式2.0
重写的原有flash mx 版时的标准模式,现在为标准模式2.0,并增加一些功能,flashmx2004时是没有标准模式,现在flash 8 里又增添了标准模式,主要针对不原手动输入代码的开发人员或是设计师。

2.UNDO/REDO 操作设置
在flash mx 2004版时我们在撤消操作时,会一步一步的将所有的撤消包括书写的代码和对象,许多人都在抱怨些功能,现在改为可以供选择的两种方式,一种是文档级别,比如只撤消代码,还有一种是对象级别,可以只撤消场景中的对象操作。

3.增强的text工具
增强了text工具,现在你可从左边也可以人右边来回的调整文本框的大小了。
4.增强的library库
首先要说的是现在的库当重新启动程序,它已经可以停在你之前所放的位置上了,并且可保存你对库面板的设置,如果你打开多个源文件,可以通过下拉菜单在一个库面上进行切换,同时你可以锁定某一个库。

5.Tabbed 面板
现在FLASH8 的面板可以让你自由的将它们成组放在一个面板上,可以使用tab键来切换,可以把你喜欢的常用的工具放在一个面板上,你还可以为他们重新命名。

6.stage 粘贴板扩展
在一些大的项目中经常需要用到超过stage的大图,从而难以看出场景中的物件与stage边的距离,现在你可以很容易的看出它们间距离,只将拖动对象靠近stage边,它就会自动的去适应位置。 ...
完整阅读本文...]]>
Macromedia Studio 8 家族成员包括:
Dreamweaver 8
Flash Professional 8
Fireworks 8
Contribute
Flash Paper
图形与网页设计者使用Flash创建网页动画或其它网页内容已经有许多年的历史,这些生动的内容为用户提供了更丰富的网络浏览体验。然而即使在今天宽带如此普及的情况下,一些体积较大的文件经常会需要较长的下载时间,这是现在的Internet用户所不愿忍受的。于是Macromedia在新版本的Flash
8中引入了几种高级技术,使得即使是内容较多的动画在最终完成时也只生成较小的文件。下面介绍一下新版的Flash 8中几大重要的新功能。
一、实时渲染滤镜
其中一种非常棒的技术是,Macromedia减轻了Flash Player 8的渲染工作,在Flash文件中使用标签,Flash Player
8现在可以在用户与Flash文件交互时实时渲染滤镜。
这意味着Macromedia已经能够合并内建的滤镜效果,象阴影、模糊、内外发光、倒角、渐变倒角、颜色调整,以获得更丰富的用户体验。这些滤镜或可视效果能够被应用到影片剪辑(MovieClips)和文本域,当在网页中运行时,通过播放器渲染并显现出来。

二、运行时位图缓冲
Macromedia通过另外的方式将Flash和Flash player捆绑在一起以提高性能。另一种新功能叫做位图缓冲,允许设计者将任何影片剪辑符号指定为一个位图,在使用Flash
player运行时获得缓冲,以提高影片播放速度。
影片剪辑符号可以使用属性检查器或ActionScript指定为位图,这些指令在运行时传给播放器,节省了通常情况下处理器用来计算矢量图形的时间。

即便对象作为位图被缓冲,对象的矢量数据仍然被保留了下来,允许设计者在任何时候将...
完整阅读本文...]]>