作者jonathanmeow (喵)
看板Flash
标题Re: [问题] 随机拨放Movie上的影格
时间Tue Feb 5 00:29:11 2008
※ 引述《jonathanmeow (喵)》之铭言:
: 再提个问题
: 上面这样的作法可以让影格在固定一段时间跳到随机影格去
: 我联想到的是掷骰子的应用
: 可是这样子固定时间好像不够动感 感觉就只是突然停下来
: 可不可以设计成先很快的跳动 然後慢慢的变慢下来 最後停在掷出来的点数呢?
自己回自己
年节前不看书乱搞
先看执行例
http://163.19.207.247/flash/test/dice.swf
原始档
http://163.19.207.247/flash/test/dice.fla
这样的做法是因为勇者斗恶龙3代sfc复刻版中的大富翁小游戏也是类似这样的方式
立体的太难做
这样做到还挺刚好的
以下说说我的看法
var fps:Number=12;
//这个数字自己调整成该档案的画面更新速率
var stop_sec:Number=0.1;
//停顿时间 本次会依状况变动
var i:Number=0;
//用来累计时间的
var m:Number=0;
//用来计算变了几次数字
var past_p:Number=0;
//用来纪录上一次的数字
var this_p:Number=0;
//用来纪录这一次的数字 避免连续两次一样的数字
//start_mc是开始掷骰子的元件名称 程式会在按下它之後启动
start_mc.onPress=function () {
point_txt.text="";
//重设掷出点数文字栏位的值
_root.onEnterFrame = function () {
//开始计时
i++;
if(i>=fps*stop_sec){
m++;
//用do...while来取和上次不一样的点数
do{
this_p=Math.floor(Math.random()*6)+1;
}while(this_p==past_p);
past_p=this_p;
//跳到那个点数去,并重新计时
_root.a_mc.gotoAndStop(this_p);
i=0;
//以下是改变停止时间的判断
//原本都是0.1秒
//等到第九次变动数字的时候
//让第九次是0.1*(9-7)=0.2
//这样就会跟第8次的时候的0.1秒不一样
//每增加一次变动数字就增加停止时间
//因此就会延长时间 有慢慢变慢的感觉
if(m>=8){
stop_sec=0.1*(m-7);
}
//第11次是0.1*(11-7)=0.4秒
//此时设定第十二次不是0.1*(12-7)=0.5秒 而是0.8秒
//让他有最後挣扎一下的feel
if(m==12){
stop_sec=0.8;
}
//等到第13次
//掷骰子的程式就停止了
//让一切回归原本的设定
//并删除_root.onEnterFrame等待下次呼叫
if(m==13){
stop_sec=0.1;
m=0;
point_txt.text="你掷的点数是"+this_p+"点!";
//上面这行是测试程式的时候用的
//如果要运用到其他程式去
//上面这行就可以改成执行该项程式
delete _root.onEnterFrame;
}
}
}
}
以上
寒冷冬夜的胡思乱想
请多指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.150.238