999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AS3.0和FlashCS5的拼圖游戲設(shè)計與開發(fā)

2021-12-19 20:23:45陳趙云
電腦知識與技術(shù) 2021年32期
關(guān)鍵詞:按鈕界面游戲

陳趙云

摘要:Flash二維動畫制作入門容易,但要真正精通很難,關(guān)鍵之一是缺少能夠深入學(xué)習(xí)、實踐的參照案例。該文詳細(xì)介紹了基于ActionScript3.0和FlashCS5的拼圖游戲設(shè)計與實現(xiàn)全過程,能夠為初學(xué)者進一步地深入學(xué)習(xí)提供引導(dǎo)和借鑒。

關(guān)鍵詞:ActionScript3.0;FlashCS5;拼圖游戲

中圖分類號:TP311 ? ? ?文獻標(biāo)識碼:A

文章編號:1009-3044(2021)32-0075-03

1 系統(tǒng)功能介紹

本拼圖游戲是基于FlashCS5和ActionScript3.0設(shè)計,有3*3和4*4兩種模式供玩家選擇,單擊主界面中對應(yīng)的模式即可進入開始體驗。

1)3*3模式即為九宮閣,相對簡單,使用代碼將原圖拆分成9格并隨機排列在游戲界面的主體位置,原圖被等比例縮放置于游戲界面的右上角,游戲界面中包含游戲說明和返回首頁的按鈕。

2)4*4模式即為十六宮閣,相對更復(fù)雜,使用代碼將原圖拆分成16格并隨機排列在游戲界面的主體位置,原圖被等比例縮放置于游戲界面的右上角,游戲界面中同樣包含游戲說明和返回首頁的按鈕。

無論九宮閣還是十六宮閣,右下角都為空,并且原圖的右下角區(qū)塊被放置在游戲整體界面的最右下方,當(dāng)完成拼圖時,單擊最右下角的區(qū)塊可以檢驗游戲是否完成。

2 系統(tǒng)功能實現(xiàn)

1)打開FlashCS5軟件,執(zhí)行文件-->新建,在彈出的對話框中設(shè)置舞臺大小為800*600,然后選擇ActionScript3.0,在新建的文檔中把準(zhǔn)備好的圖片素材導(dǎo)入庫面板中備用。

2)新建一名為result的影片剪輯備用。影片剪輯的圖層1第一幀為空白關(guān)鍵幀,第2幀到第20幀設(shè)計一個“恭喜過關(guān)”由小到大的形變動畫;在影片剪輯的圖層2第一幀和第二十幀輸入stop();

3)雙擊時間軸的圖層1改名為文本圖像,單擊該圖層的第一個關(guān)鍵幀,用文本工具在舞臺上輸入“拼圖游戲”并設(shè)置合適的大小和位置;在第二幀中借助標(biāo)尺在右側(cè)200像素的上方插入圖片素材的原圖,將result影片剪輯放在原圖的下方并命名為mcResult,最后在影片剪輯下方添加游戲說明。

4)制作Easy、Hard和Return三個按鈕元件,按鈕元件的文本分別是“開始3*3”“開始4*4”和“返回首頁”。

5)新建按鈕圖層,第一幀中將Easy和Hard兩個按鈕放在文本“拼圖游戲”下方合適的位置,分別命名為btnEasy和btnHard;第二幀中將Return按鈕元件置于游戲說明上方合適的位置,命名為btnReturn。

6)新建名為AS的圖層,在第一幀實現(xiàn)的具體功能為:進入游戲先停留在主界面;玩家選擇模式后進入對應(yīng)的模式開始游戲,詳細(xì)代碼如下:

stop();

var hNum:int=0,vNum:int=0;

btnEasy.addEventListener(MouseEvent.CLICK,toStart);

function toStart(e:Event){

hNum=vNum=3;

gotoAndStop(2);

}

btnHard.addEventListener(MouseEvent.CLICK,toPlay);

function toPlay(e:Event){

hNum=vNum=4;

gotoAndStop(2);

}

7)在AS圖層的第二幀,實現(xiàn)單擊Return按鈕返回主界面,詳細(xì)代碼如下:

btnReturn.addEventListener(MouseEvent.CLICK,goBack);

function goBack(e:Event){

prevFrame(); }

8)新建一名為main的影片剪輯,該影片剪輯的主要功能是:根據(jù)玩家選擇的模式代碼實現(xiàn)3*3和4*4兩種模式分割原圖并打亂順序;響應(yīng)鼠標(biāo)單擊事件移動拼圖;游戲結(jié)束時檢驗是否贏得游戲。在影片剪輯圖層1的第一幀中輸入如下代碼:

import flash.events.Event;

import flash.display.Loader;

import flash.display.Bitmap;

import flash.display.BitmapData;

import flash.geom.Rectangle;

import flash.geom.Point;

import flash.display.Sprite;

import flash.display.MovieClip;

import flash.utils.Timer;

import flash.events.MouseEvent;

var w:int,h:int;

var bmArray:Array=new Array();//定義一個用于存放圖像的一維數(shù)組

var endbmArray:Array=new Array();//拼圖結(jié)束進行檢查時的狀態(tài)數(shù)組

var theLastBlock:Object=new Object();//定義空白的區(qū)塊

theLastBlock.oldLocX=parent["hNum"]-1;//空白區(qū)塊水平方向

theLastBlock.oldLocY=parent["vNum"]-1;//空白區(qū)塊垂直方向

fscommand("AllowScale","false");

var loaderPic:Loader=new Loader();

loaderPic.contentLoaderInfo.addEventListener(Event.COMPLETE,wellDone);

loaderPic.load(new URLRequest("SC1.jpg"));

function wellDone(e:Event){

var czyPic:Bitmap=Bitmap(e.target.loader.content);

w=czyPic.width/parent["hNum"];

h=czyPic.height/parent["vNum"];

for(var a:int=0;a

for(var b:int=0;b

var nbMap:Bitmap=new Bitmap(new BitmapData(w,h));

nbMap.bitmapData.copyPixels(czyPic.bitmapData,new Rectangle(a*w,b*h,w,h),new Point(0,0));

var czySprite:Sprite=new Sprite;

czySprite.addChild(nbMap);

if(a==parent["hNum"]-1 && b==parent["vNum"]-1){

czySprite.x=(b+1)*w;

czySprite.y=a*h;

czySprite.addEventListener(MouseEvent.CLICK,gameResult);

addChild(czySprite);

}

else{

var bmObject:MovieClip=new MovieClip();

bmObject.oldLocX=a;

bmObject.oldLocY=b;

bmObject.addChild(czySprite);

bmArray.push(bmObject);

}

}

bmArray.sort(function(){return Math.random()>0.5?1:-1});

}

//用循環(huán)將數(shù)組元數(shù)添加到界面

for(a=0;a

for(b=0;b

if(a==parent["vNum"]-1 && b==parent["hNum"]-1){

theLastBlock.LocX=a;

theLastBlock.LocY=b;

}

else{

var nbmObject:MovieClip=MovieClip(bmArray.pop());

nbmObject.LocX=b;

nbmObject.LocY=a;

nbmObject.x=b*w;

nbmObject.y=a*h;

endbmArray.push(nbmObject);

nbmObject.addEventListener(MouseEvent.CLICK,bmClick);

addChild(nbmObject);

}

}

}

}

function bmClick(e:Event){

var clickObj:MovieClip=MovieClip(e.currentTarget);

if (clickObj.LocX==theLastBlock.oldLocX && clickObj.LocY==theLastBlock.oldLocY-1) {

moveObject(clickObj,"x",-h);

clickObj.LocY+=1;

theLastBlock.oldLocY-=1;

} else if (clickObj.LocX==theLastBlock.oldLocX && clickObj.LocY==theLastBlock.oldLocY+1) {

moveObject(clickObj,"x",h);

clickObj.LocY-=1;

theLastBlock.oldLocY+=1;

} else if (clickObj.LocX==theLastBlock.oldLocX-1 && clickObj.LocY==theLastBlock.oldLocY) {

moveObject(clickObj,"y",-w);

clickObj.LocX+=1;

theLastBlock.oldLocX-=1;

} else if (clickObj.LocX==theLastBlock.oldLocX+1 && clickObj.LocY==theLastBlock.oldLocY) {

moveObject(clickObj,"y",w);

clickObj.LocX-=1;

theLastBlock.oldLocX+=1;

} else {

return null;

}

}

function moveObject(bmObj,vx,vw) {

var timer:Timer=new Timer(50,10);//定義計時器timer,延遲50ms,重復(fù)10次

timer.addEventListener("timer",timerHandler);

timer.start();

function timerHandler(ev:TimerEvent){

if (vx=="y") {

bmObj.x -= vw/10;

} else if (vx=="x") {

bmObj.y -= vw/10;

}

}

}

function gameResult(eve:MouseEvent){

moveObject(eve.target,"y",w);

for (var num:uint=0; num

if (endbmArray[num].oldLocX==endbmArray[num].LocX && endbmArray[num].oldLocY==endbmArray[num].LocY) {

} else {

moveObject(eve.target,"y",-w);

return;

}

}

MovieClip(this.parent).mcResult.gotoAndPlay(2);

}

9)新建一名為主影片剪輯的圖層,將main影片剪輯放在該圖層的第二幀,保存Flash文檔并Ctrl+Enter測試,效果如圖1所示。

3 注意事項

1)圖片素材源文件一定要和Flash源文檔放在同一目錄下;2)要掌握在舞臺的影片剪輯中控制舞臺上其他元素時的相對路徑法,如:MovieClip(this.parent).mcResult.gotoAndPlay(2)。就是通過舞臺上一個影片剪輯來控制舞臺上的另一影片剪輯。

參考文獻:

[1] 胡國鈺.Flash經(jīng)典課堂[M].北京:清華大學(xué)出版社,2013.

[2] 劉彩虹,唐琳.Flash動畫設(shè)計與制作項目化教程[M].北京:清華大學(xué)出版社,2017.

[3] 張建琴,官彬彬.Flash CS6動畫制作案例教程[M].北京:清華大學(xué)出版社,2018.

【通聯(lián)編輯:張薇】

猜你喜歡
按鈕界面游戲
哪個是門鈴真正的按鈕
當(dāng)你面前有個按鈕
國企黨委前置研究的“四個界面”
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
人機交互界面發(fā)展趨勢研究
數(shù)獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
手機界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 欧美色图第一页| 国产精品女主播| 国产福利不卡视频| 欧美中文一区| 日韩一区精品视频一区二区| 激情六月丁香婷婷四房播| 99精品在线视频观看| 免费毛片网站在线观看| 中文字幕波多野不卡一区| 日韩无码黄色| 毛片卡一卡二| 国产精品福利社| 亚洲精品福利视频| 国产91丝袜在线观看| 欧美中出一区二区| 亚洲欧美综合精品久久成人网| 日韩精品无码一级毛片免费| 九色在线视频导航91| 97av视频在线观看| 亚洲国产清纯| 99激情网| 欧美 国产 人人视频| 91青草视频| 日韩国产亚洲一区二区在线观看 | 国产午夜福利在线小视频| 欧美翘臀一区二区三区| 在线无码九区| 色网站免费在线观看| 午夜国产大片免费观看| 第一区免费在线观看| 久久99国产乱子伦精品免| 丁香六月激情综合| 99久久国产自偷自偷免费一区| 国产亚洲欧美日韩在线一区| 老司国产精品视频91| 911亚洲精品| a毛片在线免费观看| 国产精品毛片一区| 喷潮白浆直流在线播放| 久久毛片网| 亚洲国产成人久久精品软件| 中文字幕永久在线观看| 亚洲成肉网| 国产精品国产主播在线观看| 国产视频资源在线观看| 黄片一区二区三区| 亚洲人妖在线| 国产AV无码专区亚洲A∨毛片| 亚洲一区二区黄色| 伊人狠狠丁香婷婷综合色| 亚洲国产天堂久久综合| 亚洲 成人国产| 久久91精品牛牛| 久久综合干| 精品成人一区二区三区电影| 国产精品午夜电影| 欧美日韩成人| 天天综合网站| 亚洲另类色| 超清无码熟妇人妻AV在线绿巨人| 国产精品不卡永久免费| 国产在线精品99一区不卡| 婷婷综合在线观看丁香| 日本精品影院| 国产成年女人特黄特色毛片免| 色综合a怡红院怡红院首页| 91在线国内在线播放老师| 毛片手机在线看| 狠狠综合久久| 国产91无码福利在线| 午夜国产大片免费观看| 丝袜亚洲综合| 亚洲一区波多野结衣二区三区| 99人体免费视频| 九九久久99精品| 99久视频| 在线毛片网站| 亚洲成人手机在线| 在线观看91精品国产剧情免费| 欧美成人精品高清在线下载| 久久网综合| 99re在线免费视频|