Fdream's Blog
专注于WEB前端开发
Powered by Google
1 2 3

以前在AS2中,只要为MC指定onRelease或者onRollOver等等点击事件,当鼠标移到MC上时,鼠标就变成手形了,完全不用管。在AS3中改变了这一规则,你首先得用addEventListener添加事件,添加完事件之后,鼠标移到MC上依然是默认的箭头形状。要改变这个形状,还需要指定MC的buttonMode属性为true:

引用内容:

myMC.buttonMode = true;

AS3中支持双击事件,不过要启用这个双击事件就得指定另外一个属性——doubleClickEnabled为true:

引用内容:

myMC.doubleClickEnabled = true;

不过,需要注意的是,如果你这个MC同时有单击事件和双击事件那么在双击的第一下会触发单击事件,而第二下则不回触发单击事件~

检测FLV是否播放完成,在Flash CS3的帮助文档中有onPlayStatus的说明,其返回的信息对象可能的值有两个,一个是 NetStream.Play.Switch,还一个是NetStream.Play.Complete。结果在client的事件中写上onPlayStatus,发现在编辑器中这个事件名称居然还是黑色,而不是和onMetaData一样的蓝色!如果此时加上trace(info.code),在FLV播放完成后还会报错,错误信息中冒出来一个onLastSecond。在帮助文档中查了一下这个事件,居然没有任何介绍。

既然onPlayStatus不管用,不妨试试onLastSecond,这个事件名称还是黑色,写上trace(info.code),结果FLV播放完成之后trace出来一个undefined,看来NetStream中还真有这个事件,但是为什么文档中没有任何介绍呢?

不管怎样,总算还能用onLastSecond检测FLV播放完成,不过这应该不是什么好方法……

在上面的这个图片中,现在那个绿色的矩形(绿线)长度为250,这条绿色的线是一个MovieClip,若其原长度为250,那么用event.localX获得的值将在0到250之间;但是如果其原长度为400,那么用event.localX获得的值将会在0到400之间,而与该MC在影片中的实际长度无关。

不过这样也还好,获取事件触发的x坐标占这个MC长度的百分比依然很简单,直接用除以MC的原长度就行了。

在AS3中,NetStream类有这样一个属性:soundTransform,可以用来控制FLV的声音,其实现为:

引用内容:

实现

public function get soundTransform():SoundTransform

public function set soundTransform(value:SoundTransform):void

SoundTransform类又有个volume属性,于是想是不是直接这样写就行了:

引用内容:

var volumeSize:Number = 0.2;

ns.soundTransform.volume = volumeSize;

结果丫的没任何反应……莫非必须重新为ns指定一个soundTransform对象?于是改成这样:

引用内容:

var volumeSize:Number = 0.2;

var st:SoundTransform = new SoundTransform(volumeSize,0);

ns.soundTransform = st;

这样就木有问题了。

暂停Flash中的所有MC
22 雨天 2006-11
Fdream 发表于 Flash, 已被阅读 1674 次评论 3 条
关键词:AS ActionScript

这几天在被Flash玩(还没到玩Flash的境界),在flash中写了个自定义右键菜单,其中有个暂停功能,本来以为来个简单的stop()就够了,结果发现不是那么回事,所有MC仍在继续播放……看来只有一个一个地停止所有MC了,但是这个工作显然不能人工搞定,程序吧。由于MC里面嵌套有MC,只有用递归才是比较好的办法。先找出目标MC中的所有MC,然后一个一个地stop。这样想清楚了,其实代码也很简单:

引用内容:

function stopAllClips(target:MovieClip) {

for (var mc in target) {

var objMC = target[mc];

if (objMC instanceof MovieClip) {

objMC.stop();

stopAllClips(objMC);

}

}

target.stop();

}

同样,播放所有MC的function和这个也是一样的。不过,还是有一点点问题,貌似duplicate出来的MC不能停止,不知道有没有什么办法?不过我的那个Flash中不暂停也蛮好的,本来就是用来做背景的,呵呵~~

先废话几句:AS中的计算误差也真是很有趣,例如:6.4-6.3=0.100000000000001,这是在Flash 8中运行的结果,我真是无语了!附图一张:

evalString 函数介绍:

evalString(expression:String) : Number

expression 为一个算术表达式,该函数将计算此表达式的值,并返回计算结果。此表达式仅限于简单的+、-、×、÷以及带括号的运算,表达式中不得有其他符号,包括空格。表达式中的数字不仅限于一位整数,也可为多位整数,甚至是小数

参数

expression:String - 一个字符串表达式。

返回

Number - 一个数值。

示例

var infix:String = "(48-20*(6.2-5))/(18-15)";

trace(evalString(infix)); //output 8

1 2 3
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 0.6562584 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号