日历
| |||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 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 | |||||||
存档
搜索标题
统计信息
- 访问量: 188
- 日志数: 2
- flash数: 1
- 建立时间: 2007-03-03
- 更新时间: 2007-09-25
我的最新日志
-
一个简单的Flash打字游戏
2007-9-25
代码:
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
打字游戏 ——V1.0
日期:2007-9-24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
定义变量
----------------------------------------------------------------------------------------------
*/
fscommand("fullscreen", true);
var Bring_num:Number = 0;
var Bring_maxnum:Number = 20;
var Grade_num:Number = 1;
var Grade_bring:Number = 100;
var Move_speed:Number = 2;
var Bring_speed:Number = 0;
var Press_num:Number = 0;
var Right_num:Number = 0;
var Loss_num:Number = 0;
var Grade_boolean:Boolean = false;
var Interval_num:Number = 0;
var Listener:Object = new Object();
var Addsound:Sound = new Sound();
var Addblast_mc:Object = new Object();
var Time_m:Number = 0;
var Time_s:Number = 1;
var Hide_id:Number;
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bring_word函数功能:随机产生字符
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
function Bring_word() {
var color_array:Array = new Array(0xffffff, 0x9B4A8B, 0xE0C0DB, 0xAC285E, 0x235CB1, 0x379D37, 0xB1A323);
var txtstyle:TextFormat = new TextFormat();
txtstyle.bold = true;
txtstyle.font = "宋体";
txtstyle.size = 20;
txtstyle.color = color_array[random(7)];
_root.Bring_num++;
if (_root.Bring_num>=Bring_maxnum) {
_root.Bring_num = 0;
}
switch (random(2)) {
case 0 :
txt = random(26)+97;
break;
case 1 :
txt = random(10)+48;
break;
}
_root.createTextField("txt"+_root.Bring_num, _root.Bring_num, random(Stage.width), -(random(200)+10), 25, 25);
this["txt"+_root.Bring_num].text = chr(txt);
this["txt"+_root.Bring_num].setTextFormat(txtstyle);
}
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Interval_event();初始化时产生的字符个数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
function Interval_event() {
Bring_word();
Interval_num++;
if (Interval_num>=3) {
clearInterval(Interval_id);
}
}
var Interval_id:Number = setInterval(Interval_event, 1000);
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cyc_event下落函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
function cyc_event() {
function _event() {
for (var i = 0; i<=Bring_maxnum; i++) {
var n:Number = random(2) ? -Math.random()*9 : Math.random()*9;
_root["txt"+i]._y += Move_speed;
_root["txt"+i]._x += n;
if (_root["txt"+i]._y>Stage.height) {
_root["txt"+i].removeTextField();
Bring_word();
Loss_num++;
loss_txt.text = Loss_num;
}
}
}
var cyc_id:Number = setInterval(_event, 50);
}
cyc_event();
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
监听键盘
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
Key.addListener(Listener);
Listener.onKeyDown = function() {
Press_num++;
//trace(Press_num);
if (Grade_boolean) {
Grade_num++;
Grade_boolean = false;
grade_txt.text = "第"+Grade_num+"关";
Move_speed += 2;
for (var i = 0; i<3; i++) {
Bring_word();
}
}
//trace("Press_num="+Press_num);
for (i=0; i<=Bring_maxnum; i++) {
if (_root["txt"+i].text == chr(Key.getAscii())) {
Right_num++;
Addsound.attachSound("Sound_mc");
Addsound.start();
//_root.attachMovie("Blast_mc", "Addblast_mc", _root.getNextHighestDepth(), {_x:_root["txt"+i]._x, _y:_root["txt"+i]._y});
Blast_mc.play();
Blast_mc._x = _root["txt"+i]._x;
Blast_mc._y = _root["txt"+i]._y;
_root["txt"+i].removeTextField();
Bring_word();
if (Right_num>=Grade_bring and Right_num%Grade_bring == 0) {
Grade_boolean = true;
} else {
Grade_boolean = false;
}
}
}
right_txt.text = String(Right_num);
if (Press_num-Right_num>0) {
wrong_txt.text = String(Press_num-Right_num);
} else {
Press_num += Math.abs(Press_num-Right_num);
}
};
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
时间函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
*/
function Time_event() {
Time_s++;
if (Time_s/60>1) {
Time_m++;
Time_s = 1;
}
time_txt.text = Time_m+":"+Time_s%60;
}
setInterval(Time_event, 1000);
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
简介函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
var newmenu:ContextMenu = new ContextMenu();
newmenu.hideBuiltInItems();
this.menu = newmenu;
newmenu.customItems.push(new ContextMenuItem("作者:Edward.yang", by_event));
newmenu.customItems.push(new ContextMenuItem("QQ:77839683", getqq));
newmenu.customItems.push(new ContextMenuItem("退出", exit_event, true));
function exit_event() {
fscommand("quit", "");
}
function by_event() {
Hide_id = setInterval(hide_by, 5000);
by_mc.gotoAndStop(2);
by_mc._alpha = 0;
by_mc.onEnterFrame = function() {
this._alpha += (100-this._alpha)/8;
this._x += (Stage.width/2-this._x)/8;
this._y += (Stage.height/2-this._y)/8;
//trace(this._alpha);
if (this._alpha>=100) {
delete by_mc.onEnterFrame;
}
};
}
function hide_by() {
by_mc.onEnterFrame = function() {
this._alpha -= 8;
//trace(this._alpha);
if (this._alpha<=0) {
this.gotoAndStop(1);
clearInterval(Hide_id);
delete by_mc.onEnterFrame;
}
};
}
function getqq() {
getURL("tencent://message/?uin=77839683");
}源文件下载:http://www.grandbuild.com.cn/edward/game.rar
Flash: 打字游戏 -
AS下雨效果
2007-9-18
//=================MC类自定义方法====================
//——————宽高矩形法,根据初始点坐标和宽与高确定矩形。x,y为初始点坐标,kuan和gao为矩形的宽和高。
MovieClip.prototype.kuangaojuxing = function(x, y, kuan, gao, bangzhi, yanse, toumingdu) {
this.lineStyle(bangzhi, yanse, toumingdu);
this.moveTo(x, y);
this.lineTo(x+kuan, y);
this.lineTo(x+kuan, y+gao);
this.lineTo(x, y+gao);
this.lineTo(x, y);
};
//——————MC定位方法
MovieClip.prototype.dingwei = function(x, y) {
this._x = x;
this._y = y;
};
//==================创建下雨动画=====================
//定义下雨动画函数,相关参数请参考下面的注释
/*
x_fc:下雨动画的X坐标
y_fc:下雨动画的Y坐标
yanse_fc:雨滴颜色
toumingdu_fc:雨滴透明度
yudikuan_fc:雨滴的宽
yudigao_fc:雨滴的高
qingxie_fc:雨滴的倾斜度
mijidu_fc:雨滴的密集度
pinlu_fc:下雨画面更换的频率
kuan_fc:下雨画面宽
gao_fc:下雨画面高(它和上面的参数一起控制下雨范围)
*/
function xiayudonghua(x_fc, y_fc, yanse_fc, toumingdu_fc, yudikuan_fc, yudigao_fc, qingxie_fc, mijidu_fc, pinlu_fc, kuan_fc, gao_fc) {
//创建下雨动画MC
createEmptyMovieClip("xiayu_mc", 10000);
//定位下雨动画MC
xiayu_mc.dingwei(x_fc, y_fc);
//在下雨动画里创建单个雨滴MC
xiayu_mc.createEmptyMovieClip("yudi_mc", 10000);
with (xiayu_mc) {
//宽高矩形法绘制单个雨滴MC
yudi_mc.beginFill(yanse_fc, toumingdu_fc);
yudi_mc.kuangaojuxing(0, 0, yudikuan_fc, yudigao_fc, 0, 0x000000, 0);
yudi_mc.endFill();
//定义雨滴的倾斜度
yudi_mc._rotation = qingxie_fc;
//连续调用“jingtaihuamian”函数,形成下雨动画
var xiayu_si = setInterval(jingtaihuamian, pinlu_fc, mijidu_fc, kuan_fc, gao_fc);
}
}
//定义下雨动画的静态画面函数
function jingtaihuamian(mijidu_fc, kuan_fc, gao_fc) {
//随机复制单个雨滴MC,形成单贞下雨画面
for (var i = 0; i<mijidu_fc; i++) {
xiayu_mc.yudi_mc.duplicateMovieClip("yudi_mc"+i, i);
xiayu_mc.yudi_mc.dingwei(random(kuan_fc), random(gao_fc));
}
}
//==============按钮控制下雨动画===============
kaishi_btn.onRelease = function() {
//在需要下雨的贞调用这个函数就可以下雨了!
xiayudonghua(0, 0, 0xffffff, 50, 2, 30, 30, 100, 10, 550, 400);
};
tingzhi_btn.onRelease = function() {
//天晴的时候就调用这个函数
xiayu_mc.removeMovieClip();
};
★只要把上面的代码复制到第一贞,然后再建立一个“kaishi_btn”和"tingzhi_btn”按钮就可以欣赏效果了。我把代码写到函数里,是为了方便在动画中使用,在需要下雨的地方,只要调用"xiayudonghua"这个函数就可以了,而在天晴的时候,写一句xiayu_mc.removeMovieClip()就OK了,怎么样?挺好用的吧
★下面大致讲一下原理。
★别一看是纯AS写出来的,就貌似很牛B了,吓得你只敢用不敢看了,其实它的原理很简单
1,先创建一个空的xiayu_mc,所有的雨滴都将放到这个MC里,这是为了便于删除下雨效果。
2,然后在这个MC里调用自己定义绘图方法绘制一个细条型的矩形,这个矩形就是原始的雨滴模型yudi_mc。
3,根据这个雨滴模型复制大量相同的雨滴,并使他们随机分布在指定的范围内,这样就形成了一个下雨的画面,这个画面就类似那些动画设计师在PS中绘制的下雨图片。这个过程在jingtaihuamian函数中完成。
4,最后就是通过setInterval不断调用jingtaihuamian函数,由于jingtaihuamian中使用了随机函数,每次调用jingtaihuamian生成的下雨画面都不一样,这样连续起来就形成比较逼真的下雨效果了。
★怎么样,很简单吧
★但如果你看懂了,先别得意哦,我们要学会发散思维,如果我们把xiayu_mc设置成某个MC的遮罩的话,会弄出什么效果呢?我首先想到的就是另一个非常常见的效果:“波光粼粼”。
下面就是我用这个原理做的效果,有兴趣的朋友可以去看看,相信聪明的你们自己也可以做出来了吧:)
(来源于http://www.huoshan.org/#zizhan=wenjiv1=wenzhang_2 )
