|
查看: 1910|回复: 15
|
[原创] 三种滑鼠的效果
[复制链接]
|
|
|
发表于 23-11-2008 10:58 PM
|
显示全部楼层
教程(1)- 跟随滑鼠:
1。首先先开一个新档。什么size都可以。把fps改成30,这样跑的会比较顺。
这里注明以下用的是ActionScript 2.0,选择建立新档的时候注意(尤其是Flash CS3)。
2。Insert>New Symbol>MovieClip。先画一个圆圈。都会画吧?然后再把它convert成MovieClip。
在第10个Frame Insert " KeyFrame ",这里把圆圈缩小,透明度Alpha=0。
记得每一个圆圈都要对齐中心。有看到Stage上面的小小十字架吗?你可以开启Align的toolbar,选To Stage然后让他对齐中心。(如果没有队齐的话,他与滑鼠坐标会出问题)
再来建立Motion Tween在中间。
然后,把下面的code放在第10个Frame(就是圆圈不见的Frame)
removeMovieClip(this)
stop();
基本上这个就是很简单的圆圈变小消失的动画就完成了。
不要告诉我这里也有问题=.='l|
***我习惯用MovieClip来做动画,所以绝对不会用到Graphic,因为MovieClip好处就在它可以用Filter~所以不要奇怪为什么我会用MovieClip而不是Graphic来做Motion。
3。退回Scene 1。先把做好的MovieClip给一个名字。
在Propertise里面,在左下角上面有<instance name>的字样。给他一个名字叫"asd"。
这是我随便做的时候方便的名字=.='l|,要换自己换咯~不过之后Paste的code也要注意,要把有asd的全部改成你要的名字。
最后把这个"asd"拉到Flash 灰色的区域隐藏着。
4。再来把下面的code paste在第一个Frame上面。
var Listener1:Object = new Object();
n = 1;
Listener1.onMouseMove = function() {
duplicateMovieClip(asd, "asd"+n, n);
_root["asd"+n]._x = _xmouse
_root["asd"+n]._y = _ymouse
n++;
};
Mouse.addListener(Listener1)
5。你已经完成咯~按下Ctrl+Enter看看~
[ 本帖最后由 VernGalaxy 于 23-11-2008 11:05 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 23-11-2008 11:18 PM
|
显示全部楼层
教程二:以滑鼠为中心,绕着滑鼠转圆圈
前面三个步骤是一样的,第4个则是将这个code Paste进去:
var angle = 0;
Listener1.onMouseMove = function ()
{
angle = angle + 2
duplicateMovieClip(asd, "asd" + n, n);
_root["asd" + n]._x = _xmouse + Math.sin(angle) * 30;
_root["asd" + n]._y = _ymouse + Math.cos(angle) * 30;
++n;
}; ]
红色部分是圆圈的公式~Locus来得。。。虽然有点不同,不过大家都看得出把~
[ 本帖最后由 VernGalaxy 于 23-11-2008 11:22 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 23-11-2008 11:21 PM
|
显示全部楼层
教程三:绕着Flash的中心转
前面3个步骤还是一样,第4个则是下面的code:
var angle=0
Listener1.onMouseMove = function ()
{
angle = angle + 2
duplicateMovieClip(asd, "asd" + n, n);
_root["asd" + n]._x = Stage.width / 2 + Math.sin(angle) * 30;
_root["asd" + n]._y = Stage.height / 2 + Math.cos(angle) * 30;
++n;
}; |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 23-11-2008 11:29 PM
|
显示全部楼层
Code解释:(基于教程1,因为都是类似,只有第4个步骤小小不同)
var Listener1:Object = new Object();
n = 1;
Listener1.onMouseMove = function() {
duplicateMovieClip(asd, "asd"+n, n);
_root["asd"+n]._x = _xmouse
_root["asd"+n]._y = _ymouse
n++;
};
Mouse.addListener(Listener1)
到目前为止这些code都很浅白,我这里只要大概告诉actionScript的grammar你就会明白了。
var Listener1:Object = new Object();
我先建立一个Object,名叫Listener1。Object的用途很广,这里我不多做解释,其中一个就是用来detect Mouse的动作。
这个小朋友都会懂。我建立一个变数,值为1。
Listener1.onMouseMove = function() {
duplicateMovieClip(asd, "asd"+n, n);
_root["asd"+n]._x = _xmouse
_root["asd"+n]._y = _ymouse
n++;
};
这里分3段来解释。
红色部分:我指定Listener1,命令它当滑鼠移动就做下面的动作。
橙色部分:每当滑鼠移动,我就"复制" (duplicate)在Stage上面的一个MovieClip,那个MovieClip的名字是"asd",然后再给这个新的MovieClip新的名字,叫做“asd"+n,然后给它一个层次为n。
****这里有一点点点点点复杂给初学者。基本上duplicateMovieClip的function结构是这样:
duplicateMovieClip(你要复制的movieClip名字,"复制品的新名字“,层次)
前面两个大家都知道是什么意思吧?唯有层次比较复杂。层次的意思就好像Photoshop的Layer。每制作一个新的东西就要给它一个层次号码(Number),才不会重叠。如果有两个一模一样层次的movieClip,就会有error,flash会照跑,可是东西显示不出来。
所以,我才会一开始给一个 n=1 的变量,这样可以避免名字重叠,也可以避免层次重叠。
蓝色部分:我指定刚刚复制出来的movieClip的x,y坐标等于滑鼠的坐标。
这样每次复制就会以mouse的坐标为准。最后你看到的就是很多个movieClip“圆圈“连成的一条线。
而 n++ 的意思就是每做完上面的东西,n加上1。这用意是为了避免名字重叠,也可以避免层次重叠。因为他会一直增加,所以每一个复制品的名字和层次都不一样~
removeMovieClip(this)
stop();
这个是paste在movieClip里面的Code。基本上我要他做的就是,当他走到第10个frame的时候,就把自己删除。
这个用意是为了避免复制太多movieClip,最后Flash Player会很lag。而且,每次复制后的movieClip,一下子就不见了,透明度=0的movieClip我们也没有用到,就让他删除咯~
基本上就是这样。只要大家都懂每行code到底是什么意思就可以了~good luck then~ |
|
|
|
|
|
|
|
|
|
|
发表于 24-11-2008 09:10 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 24-11-2008 09:25 PM
|
显示全部楼层
原帖由 JohnChronox 于 24-11-2008 09:10 PM 发表 
好久好久没看到flash教学了
很棒!
加油……
谢谢你~
因为我自己也有自学Flash~还蛮好玩的~
还买了一本AS2.0/3.0的Bible字典来看。。。刚刚才来到这里的~多多指教~ |
|
|
|
|
|
|
|
|
|
|
发表于 25-11-2008 12:33 AM
|
显示全部楼层
我也打算买actionscript3.0 bible
朋友买了120++
你买多少钱呀? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 25-11-2008 12:40 AM
|
显示全部楼层
原帖由 JohnChronox 于 25-11-2008 12:33 AM 发表 
我也打算买actionscript3.0 bible
朋友买了120++
你买多少钱呀?
原来你也知道这本书~~
其实我也忘记了诶。。。我把标签拆了,哈哈。。。
依稀记得也是差不多那个价钱。我在MPH买的~网上好像也有它的电子书(非法= =)。。。 |
|
|
|
|
|
|
|
|
|
|
发表于 25-11-2008 02:42 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 26-11-2008 12:03 PM
|
显示全部楼层
目前太多电子书要读了
下载了一本AS3.0的,内涵video tutorial
看完了再去找bible
 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-11-2008 05:15 PM
|
显示全部楼层
原帖由 JohnChronox 于 26-11-2008 12:03 PM 发表 
目前太多电子书要读了
下载了一本AS3.0的,内涵video tutorial
看完了再去找bible
娃娃~
不错诶~真羡慕你有哪个时间。。。
Btw,你有研究过类似连线的Flash AS吗?我一直都在找,可是好像都没有头绪。。。想做那种可以玩LAN的Flash |
|
|
|
|
|
|
|
|
|
|
发表于 27-11-2008 11:45 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 27-11-2008 01:32 PM
|
显示全部楼层
歡迎多寫些教程哦
原帖由 VernGalaxy 于 26-11-2008 05:15 PM 发表 
娃娃~
不错诶~真羡慕你有哪个时间。。。
Btw,你有研究过类似连线的Flash AS吗?我一直都在找,可是好像都没有头绪。。。想做那种可以玩LAN的Flash
這方面你可以去熟悉一下 XML Socket 的用法 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 27-11-2008 04:56 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 27-11-2008 07:39 PM
|
显示全部楼层
Flash 本身就可以了, 但你必須要有台 Server 做接收和傳送 Flash 的資料
XMLSocket 主要是 Client Side 的傳送和接收部分, 步驟主要是
1. 定義 XMLSocket
2. 連接 Server Side 的 IP 和 Port 做 Handshake 動作
3. 使用 send 傳送 xml 資料到 Server side
4. Server side 接收到並同時傳送給所有連接上的 Client Side
5. 使用 onXML 接收 Server Side 傳送過來的資料, 並依照自己的方式呈現
xml 資料的結構就自己定義 |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|