這是壹個用Flash CS4版本(AS3)設計的壹個動畫,直接破解的話會產生很多冗余代碼,其實它的原理非常簡單,簡單分為2步
1、按鈕的rollover和rollout添加偵聽
2、發生事件時根據事件對象調整活動板的位置
在破解代碼中最核心的壹句其實就是在menu_2.as中的 this.banzi.x = this.banzi.x - (this.banzi.x - REAST.OTL.banzi_x) / 2;這句對板子X位置的調整,這都是根據其上事件對象進行調整的,上面部分是個判斷
case 1:
{
REAST.OTL.banzi_x = 290.8;
break;
}
case 2:
{
REAST.OTL.banzi_x = 406;
break;
}
case 3:
{
REAST.OTL.banzi_x = 523.6;
break;
}
case 4:
{
REAST.OTL.banzi_x = 648.4;
break;
}
case 5:
{
REAST.OTL.banzi_x = 772.4;
break;
}
case 6:
{
REAST.OTL.banzi_x = 896.4;
break;
}
case 7:
{
REAST.OTL.banzi_x = 1011.6;
break;
}
default:
{
break;
}
這個有點基礎就很好理解了。
最後就是怎麽實現這個效果,其實上面已經說了,這裏再給妳壹個具體實現方法吧
比如妳按鈕為btn
則
btn.addEventListener(MouseEvent.ROLL_OVER,overfun);
btn.addEventListener(MouseEvent.ROLL_OUT,outfun);
overfun是處理鼠標指中按鈕的函數,outfun是處理鼠標移除按鈕的函數
function overfun(evt:MouseEvent){
這裏就通過evt.target獲取事件觸發對象板子的x位置進行調整啦
}
function outfun(evt:MouseEvent){
同上
}
建立壹個板子移動處理函數
function banzimove(evt:Event){
移動公式
}
最後壹個問題就是如何來觸發這個板子移動函數,由於是漸進式移動,所以我們必須使用壹個時鐘類來控制,讓其移動有時間間隔,這裏建議使用ENTERFRAME,不過也可以使用TIMER時間。就是這麽簡單。如果妳有底子,這應該很容易做出來,不明白可以問我