分类为 ActionScript 的存档
moock的《Essential ActionScript 3.0》中文版似乎也要出了
Author: 柳世杀神·GabrielGon3 二 2008
由机械工业出版社出版,似乎还在找译者……大概一年后可以看到第一版吧……这本书…
让 Flash 广告具有记忆功能
Author: 柳世杀神·GabrielGon3 二 2008
当你常去的论坛上有个 Flash 广告,而你每次刷新页面的时候它都从头播放.会不会感觉很烦? 所以我们要改装一下这个Flash.给他植入记忆功能.要实现的效果:刷新或关闭页面的时候记住上次的播放头位置.下一次打开页面动画接着上一次的位置继续播放.应用:效果可以看经典论坛的 Banner 广告.http://bbs.blueidea.com实现代码如下(发布成AS1/AS2):var deng = SharedObject.getLocal(‘remember’);if (deng.data.pos != undefined) {gotoAndPlay(deng.data.pos);}this.onEnterFrame = function () {deng.data.pos = _currentframe;};deng.flush();最后,感谢 MM 实现的 SO很好,很强大.绿色而且环保.
一些不太常见的代码写法
Author: 柳世杀神·GabrielGon29 一 2008
先看一下下面的代码,看是否每个都知道是干什么的,稍后我再把每一个代码的作用帖上。首先声明一下,写下述代码的目的不是让大家模糊代码,只是看到这样的代码时心中有数,呵呵,另外也希望能有朋友补充一下(注意,以下代码仅为示例,但大部分代码对于高手来说是不成问题的) 1、mc.gotoAndPlay(Math.random()*10>>0);//Math.random()*10 取 10以内带小数的随机数。>> 是移位符号 >>0 的功能去除小数点后的数!!(这个方法的确高明)所以 Math.random()*10>>0 整句话的意思是 获取10以内的随机整数!——————————————-推广的想 用在加载进度条中trace((已经加载的字节数/总字节数}*100>>0+"%") 的确很方便啊!2、if(i&1){}//i&1 的意思就是判断 i是奇数还是偶数 如果是奇数i的2进制表示最后一位是1,i&1=1 真 偶数i的2进制表示最后一位是0, i&1=0 假。3、for (var i:int=0; i<10; a.push(i++));//此循环执行后a数组的值为 0,1,2,3,4,5,6,7,8,9.一个简化程序的方法能用上的地方有很多。。具体地方具体分析。。4、var temp:Number=mouseX;stage.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);function moveHandler(e:MouseEvent):void {var d:Number=(-temp+(temp=mouseX)); }//这段代码功能是 获取鼠标移动距离 d 用在鼠标拖拽窗体或者鼠标拖拽游戏上真是不要太爽!!!代码完全可以改为Mouse.hide();var temp:Number=mouseX;stage.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);function moveHandler(e:MouseEvent):void { var d:Number=(-temp+(temp=mouseX)); spriteMouse.x += d; e.updateAfterEvent();}这样 spriteMouse 这个影片剪辑就成了一个鼠标5、function fn1 () {trace("1");}function fn2 () {trace("2");}([fn1,fn2][Math.random()*2>>0])();//这个是随机执行函数的命令 挺有意思的 如 一个欢迎界面function …
ActionScript3 CookBook
Author: 柳世杀神·GabrielGon22 一 2008
刚才打电话给电子工业,这书终于出版了………………明天入库,然后发…
测试AS代码的执行速度
Author: 柳世杀神·GabrielGon21 一 2008
《ActionScript殿堂之路》第一版勘误(随发现陆续更新)
Author: 柳世杀神·GabrielGon21 一 2008
我眼中的常量与变量
Author: 柳世杀神·GabrielGon18 一 2008
最重要的一点也是难点,你要想尽一切办法理解:值类型与引用类型的区别。 在OOP(面…
as入门之恶补数学(四)-看到弧度你不必糊涂
Author: 柳世杀神·GabrielGon18 一 2008

有些朋友说,看到弧度我就晕——糊涂。其实这是因为我们对它,还不太熟悉、理解的缘故。以前我们也常说:看到AS我就晕。通过学习对AS比较熟悉、理解了,也就不那么晕了。为此我想谈谈有关弧度的问题。也许能对有些朋友有一点帮助。 一、角的两种单位“ 弧度”和“度”是度量角大小的两种不同的单位。就像“米”和“市尺”是度量长度大小的两种不同的单位一样。 在flash里规定:在旋转角度(rotation)里的角,以“度”为单位;而在三角函数里的角要以“弧度”为单位。这个规定是我们首先要记住的!!!例如:rotation2--是旋转“2度”;sin(π/2)--是大小为“π/2弧度”的角的正弦。 二、弧度的定义 所谓“弧度的定义”就是说,1弧度的角大小是怎样规定的? 我们知道“度”的定义是,“两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度。(如图1) 那么,弧度又是怎样定义的呢? 弧度的定义是:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度。(如图2) 比较一下,度和弧度的这两个定义非常相似。它们的区别,仅在于角所对的弧长大小不同。度的是等于圆周长的360分之一,而弧度的是等于半径。 简单的说,弧度的定义是,当角所对的弧长等于半径时,角的大小为1弧度。角所对的弧长是半径的几倍,那么角的大小就是几弧度。它们的关系可用下式表示和计算: 角(弧度)=弧长/半径圆的周长是半径的 2π倍,所以一个周角(360度)是 2π弧度。半圆的长度是半径的 π倍,所以一个平角(180度)是 π弧度。 三、度跟弧度之间的换算 据上所述,一个平角是 π 弧度。即 180度=π弧度由此可知: 1度=π/180 弧度 ( ≈0.017453弧度 )因此,得到 把度化成弧度的公式: 弧度=度×π/180 例如: 90°=90×π/180 =π/2 弧度 60°=60×π/180 =π/3 弧度 45°=45×π/180 =π/4 弧度 30°=30×π/180 =π/6 …
as入门之恶补数学(三)
Author: 柳世杀神·GabrielGon18 一 2008
我们都知道,横波是一种正弦波,那么我们就要模拟出来一个正弦的波的形状.下面说一下它的制作过程及原理.原理:使用正弦函数控制每个小球在竖直方向的运动,用复制函数来复制相同的小球在不同的水平位置.制作过程:1、先做一个小球,我们可以用线性渐变,做一个有一定立体感的小球。转换为mc2、新建一个mc,命名为ss,把刚才做好的小球mc拖入场景,调整它的位置到正中间。在小球mc上加上如下代码:onClipEvent(load){ //小球载入时PI=math.PI //定义数学PI为数学PI}onClipEvent(enterFrame){ //进入帧时_y=-50*math.sin(t*PI/20) //设定小球的y坐标随着角度的变化而变化,实际就是控制它的y坐标在-50到50之间变化t++//角度递增}//这样实现的效果是,小球在初始的位置开始,以这个点为平衡位置,上下不停的往复运动.3、回到主场景,建立一个坐标系,记下坐标系原点的位置,也就是两个轴交点的坐标。4、把mc ss拖入主场景,取实例名为ss,把ss放在坐标轴的原点,也就是那个交点上。如果无法调整好,可以通过坐标来设定。5、在第一帧上写下如下代码:i=1 //定义复制的初始值onenterframe=function(){ //进入帧时if (i<60){ //复制小球的个数为60个duplicateMovieClip("ss","ss"+i,i); //复制 setProperty("ss"+i,_x,ss._x+8*i); //设置每个小球的位置依次递增 }i++; //递加}//关于复制函数,在这里我们不作讨论.好了,大功告成。还等什么,ctrl+enter测试吧,看看做的怎么样~~~后记,当然,你也可以加上一些控制按钮,来控制它的播放,自己试一试吧~~3、余弦函数余弦函数和正弦函数差不多,我们来看一下:余弦在数学中是这样来定义的,在直角三角形中,角θ的余弦等于它的邻边和斜边之比。sinθ=邻边/斜边在我们的直角三角形中,公式可以修改为:sinθ=a/c在数学中,它和正弦一样,也有很多应用。(1)、关于它的取值。在数学中,θ是一个角度值,所以我们同样会遇到cos(30),cos(60)等等。而它的计算结果是一个数值,是一个-1<=cosθ<=1大于等于负一而小于等于正一的值。这个值在不同的角度范围有时为正,有时为负,取值如下:0度<=θ<=90度 和 270度<=θ<=360度 sinθ>=090度<=θ<=270度 sinθ<=0还是各占半个周期,半个周期为正,半个周期为负。这样我们同样可以利用它来控制一个量在一定的范围内来回变化,而不会超出这个返回。这个在这个函数的图像中也会体现出来。(2)、关于它的周期性。三角函数都有周期性。正弦和余弦的周期都是360度,也就是2π。以它为周期,循环变化。也就是经过360度,结果重复一次。(3)、在这里我们提一下他们的变化趋势。正弦函数和余弦函数是周期性的函数,在数学中他们的单调性(也就是变化规律),不是单调递增或者单调递减,而是在不同的范围内是不相同的。我们来具体看一下:正弦函数:0度<=θ<=90度 递增 而且是增加的越来越慢90度<=θ<=180度 递减 而且是减少的越来越快180度<=θ<=270度 递增 而且是增加的越来越慢(注意这里指的是数值上的增加,因为在这个范围,结果是一个负值)270度<=θ<=360度 递减 而且是减少的越来越快(同样这里指的也是数值上的减少)余弦函数:0度<=θ<=90度 递减 而且是减少的越来越快90度<=θ<=180度 递增 而且是增加的越来越慢(同样这里指的是数值上的增加)180度<=θ<=270度 递减 而且是减少的越来越快(同样这里指的是数值上的减少)270度<=θ<=360度 递增 而且是增加的越来越慢(同样这里指的是数值上的增加)从上面我们可以看出,作为正弦和余弦函数,它们的单调区间(范围)是在一个确定的范围之内。而且他们的单调变化也是有一定的特点,利用这一点,我们可以来设置一些mc运动的缓动。在as中关于余弦函数Math.cos()在as中计算角度的正弦的语法很简单。Math.cos(theta)变量theta是用弧度表示的一个角。下面是一个简单的测试。x=Math.cos(0)trace(x)//输出1x=Math.cos(Math.PI) trace(x)//输出-1x=90*Math.PI/180 …
as入门之恶补数学(二)
Author: 柳世杀神·GabrielGon18 一 2008

在学习三角函数之前,我们先来了解一个概念---弧度在日常生活中我们使用的度量角度的单位是度。一个圆周是360度,但是这个数字是任意规定的。而弧度单位是数学家们定义的测量角度的标准公制单位。弧度是基于π定义的,π是圆的一种固有属性。计算机编程语言通常在处理角度时都以弧度为单位。flash as的内置Math类,它在计算时都是以弧度为单位。弧度的定义如下:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角的弧度为1。从下面一个图示我们来看一下:在这个图中,夹角θ的弧度可以使用这个公式来计算:弧长为s,半径为l,则夹角θ的弧度值就是θ=s/l。π是一个常量,在flash的as中,用Math.PI来定义,PI的值为3.1415…..我们可以测试一下:p=Math.PItrace(p)//输出为:3.14159265358979那么。如何将度转化为弧度呢?基本的关系是π弧度等于180度比例为π:180。因此2π弧度就等于360度,也就是一个圆周。转换的关系式为:弧度=度×π/180在flash as中,我们可以通过这样的函数来进行转换:function dzhd(angel){ //angel为一个度表示的角度,自定义一个函数dzhdreturn angel*(Math.PI/180)}我们可以来测试一下这个函数:function dzhd(angel){return angel*(Math.PI/180)}x=dzhd(180)trace(x)//输出为3.14159265358979,也就是pi当然,我们在使用的过程中不一定非要用函数来进行转换,我们可以直接用一个表达式来进行转换,同样是可以的。比如把一个角度angel转换为一个弧度hudu值,可以用下面来表示hudu=angel*(Math.PI)/180测试一下:angel=180hudu=angel*(Math.PI/180)trace(hudu)//输出为3.14159265358979,也就是pi同样,我们也可以把弧度转换为度。弧度值乘以180/π得到角度:自定义函数:function hdzd(hudu){return hudu*(180/Math.PI)}测试:function hdzd(hudu){return hudu*(180/Math.PI)}x=hdzd(1)trace(x)//输出为57.2957795130823,实际上1弧度对应57.3度。同样,我们也可以直接用一个表达式来转换而不用函数。angel=hudu*(180/Math.PI)测试:hudu=1angel=hudu*(180/Math.PI)trace(angel)//同样输出为57.2957795130823,实际上1弧度对应57.3度。10、三角函数既然说到三角函数,我们还是要从最基本的做起。我们的三角函数,最初是在直角三角形中形成的,来看一下这个三角形。直角三角形实际上就是其中的一个角是90度的三角形,也就是有一个角是直角。它的直角处用一个小的正方形来标识。它的三条边,直角边用a、b标记,最长的一边c称为斜边。整个现代文明可以说都是建立在三角形的基础之上的。直角三角形中三条边和三个角之间的关系是as程序员必备的基础知识。1、勾股定理这是一个很远古的公式,可能我们很早就已经了解过了。a的平方加上b的平方等于c的平方。那么,如果我们想计算c的值,对该方程的两边求平方根就可以了。对于这个定理,大家先有一个基本的认识,等我们来介绍具体在flash场景中使用的时候,我们再具体的来说一个它的应用。2、正弦函数:正弦在数学中是这样来定义的,在直角三角形中,角θ的正弦等于它的对边和斜边之比。sinθ=对边/斜边在我们的三角形中,公式可以修改为:sinθ=b/c在数学中,关于这个函数有很多计算的项目和应用。我们在这里给大家提两点需要大家注意:(1)、关于它的取值。在数学中,θ是一个角度值,所以我们会遇到sin(30),sin(60)等等。而它的计算结果是一个数值,是一个-1<=sinθ<=1大于等于负一而小于等于正一的值。这个值在不同的角度范围有时为正,有时为负,取值如下:0度<=θ<=180度 sinθ>=0180度<=θ<=360度 sinθ<=0这样我们可以利用它来控制一个量在一定的范围内来回变化,而不会超出这个返回。这个在这个函数的图像中也会体现出来。(2)、关于它的周期性。三角函数都有周期性。正弦和余弦的周期都是360度,也就是2π。以它为周期,循环变化。也就是经过360度,结果重复一次。在as中关于正弦函数Math.sin()在as中计算角度的正弦的语法很简单。Math.sin(theta)变量theta是用弧度表示的一个角。下面是一个简单的测试。x=Math.sin(0)trace(x)//输出0x=Math.sin(Math.PI)trace(x)//输出1.22460635382238e-16 这是因为浮点数是以二进制格式存储的,因此会有一定的误差。这是一个非常接近于0的值x=90*Math.PI/180 //把90度转换为弧度值x=Math.sin(x)trace(x)//输出为1x=Math.sin(90)//之间计算数字90的正弦值trace(x)//输出0.893996663600558//从这里可以看出,flash as接受的是一个弧度值,如果是一个数字,则as会认为它是一个弧度来进行计算下面是使用flash的绘图函数,绘制一个正弦函数的图代码如下,加到第一帧就可以了//使用绘图函数,绘制一个正弦函数的图像。x0=50 //定义开始绘制的位置。y0=200a=100//定义一个初始的振幅,也就是扩大一个,不然sinθ的值小于1,很难看出来。//我们设计一个动态绘制的过程。du=0//定义开始绘制的角度_root.moveTo(x0,y0) //绘制的初始位置x=x0 //定义开始绘制的水平位置_root.onEnterFrame=function(){ //进入帧时,开始绘制_root.lineStyle(3,0×00ff00,100) //绘制格式hudu=Math.PI*du/180 //把角度转换为弧度x=x+0.5 //水平方向每隔0.5象素,绘制一次du++ //角度递加,每次加一度//trace(du),你可以测试一下角度的变化y=y0-a*Math.sin(hudu) //绘制的y坐标.在这里为甚么用y0减去这个三角函数值呢?因为三角函数计算出来在小于180度时为一个正值而对于flash的场景来说,上边数值小,下面数值大,为了和数学上的函数图像适应,所以减去._root.lineTo(x,y) //绘制if(du==720){ //如果角度增加到720度,也就是两个循环,重新开始绘制 clear() //清屏 x=x0 //初始化位置 _root.moveTo(x0,y0) …



最活跃用户