亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

flash立體小方塊拼圖游戲的實現思路

系統 1937 0

YangPuXiao的這個帖子里提了一個關于立體小方格拼圖的游戲:
http://bbs.actionscript3.cn/thread-17085-1-1.html
,這里給出一個基本實現的思路,以及程序流程和演示。
先來看一下實現后的效果,因為是臨時做得所以代碼不規范也沒有做吸附算法,所有的東西也都是寫在時間軸上面的。
還是按照我的慣例通過圖文講解主要環節的考慮,形象大使的還是我們的“葡萄MM“。
講解
1、基本思路
小方格拼圖由于他的每一個拼圖外形都不會是規則的,可能是L型,可能是T型,所以我們無法把每一個部件作為獨立的物體來處理遮擋關系。但是因為他的基本型是小方塊,如果我們排序通過小方塊來處理,那么一起都會非常簡單了。可以用N中方法來處理小方塊基本型的排序。
排序解決了那么我們解決拖動問題?我們需要拖動的不是一個小方塊而是由許多小方塊拼起來的拼圖部件。想想我們在Flash cs3中經常用到的Ctrl+G群組功能,我們只要把不同的拼圖部件作為一個組,拖動組里面的任何一個方塊都將移動這個群組里面的所有小方塊,然后在松開鼠標的時候解除群組。按照上面說得小方塊來做一次遍歷排序不就行了?
2、群組的實現
我們給每一個拼圖部件設置一個拼圖數組,數組里面的每一個元素記錄這一個小方格的編號。同時,每一個小方格也都有一個屬性記錄了自己在哪一個組里面。這里例子里面用到了5個部件,所以我定義了5個數組來保存。

3、拖放群組任意一個成員移動群組的實現
這個其實很簡單,一說就能明白了。我們定義了一個空的Sprite始終在場景的最上層,當我們拖動群組中某個成員的時候把這個群組中所有的對象都加入到這個空的Sprite里面。讓這個Sprite跟著鼠標拖動就好了。停止拖動的時候,我們在把放到Sprite里面的這些對象取出來(相當于取消群組)再放回到場景里面,再把Sprite重新放在場景最上層。
因為剛剛拖動的是sprite,所以只有Sprite的坐標變化了,釋放的時候需要把群組里面每一個對象的坐標調整到新坐標,同時重新把Sprite的坐標置為0,0.?
復制內容到剪貼板
代碼:
這是拖放的關鍵代碼:
function group(index:int)
{
//見下面的完整代碼
}
function ungroup(index:int)
{
//見下面的完整代碼
}
this.addEventListener(MouseEvent.MOUSE_DOWN,onmouseDown);
this.addEventListener(MouseEvent.MOUSE_UP,onmouseUp);
function onmouseDown(evt:MouseEvent)
{
clickGroupIndex=evt.target.name.substr(5);
group(int(clickGroupIndex));
sprite.startDrag();
alpha=0.5;
}
function onmouseUp(evt:MouseEvent)
{
????? ungroup(int(clickGroupIndex));
sprite.stopDrag();
}

4、深度排序的實現
考慮到這只是個簡單的例子,所以我通過這種方式來確定每個小方塊的層級應該在上面還是下面。
規則:方塊的屏幕y值越大則層級越高,如果Y值相等則X值越大層級越高。
我們先遍歷一下場景中所有的方塊都記錄在同一個數組里面,然后為每個方塊增加一個deep屬性,最后通過數組的sort方法,根據deep屬性排一次順序。最后從第一個開始把排好序的數組中的每一個方塊重新addChild一遍就OK了。
復制內容到剪貼板
代碼:
function sortDeep(a,b)
{
if(a.deep>b.deep)
return 1;
else if(a.deep
block1.group=1;
block2.group=1;
block3.group=1;
block4.group=1;
block5.group=2;
block6.group=3;
block7.group=3;
block8.group=3;
block9.group=3;
block10.group=4;
block11.group=4;
block12.group=4;
block13.group=5;
block14.group=5;
block15.group=5;
block16.group=5;
this.addEventListener(MouseEvent.MOUSE_DOWN,onmouseDown);
this.addEventListener(MouseEvent.MOUSE_UP,onmouseUp);
checkDeep();
function onmouseDown(evt:MouseEvent)
{
clickGroupIndex=evt.target.name.substr(5);
group(int(clickGroupIndex));
sprite.startDrag();
alpha=0.5;
}
function onmouseUp(evt:MouseEvent)
{
ungroup(int(clickGroupIndex));
sprite.stopDrag();
alpha=1;
checkDeep();
}
function sortDeep(a,b)
{
if(a.deep>b.deep)
return 1;
else if(a.deep
本文轉自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/4678.html

flash立體小方塊拼圖游戲的實現思路


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久国产精品岛国搬运工 | 成人欧美视频在线观看 | 久久精品国产免费观看99 | 日日舔 | 永久免费的啪啪免费的网址 | 99久久久| 久热re在线视频精品免费 | 在线播放国产一区二区三区 | 伦理亚洲 | 欧美xxxx狂喷水喷水 | 米奇精品一区二区三区在线观看 | 久久伊人免费视频 | 一区二区三区中文国产亚洲 | 一级一毛片a级毛片 | 欧美 日韩 成人 | 国产免费久久精品44 | 日本三级做a全过程在线观看 | 国产短视频精品区第一页 | s级毛片 | 80s成年女人毛片免费观看观看 | 99久久精品国产片久人 | a看片| 久久久国产免费影院 | 午夜国产精品久久影院 | 手机在线精品视频每日更新 | 亚洲区精品久久一区二区三区 | 一级毛片a免费播放王色 | 日韩久久久精品中文字幕 | 自拍 欧美 在线 综合 另类 | 久久国产精品99精品国产 | 久久久精品日本一区二区三区 | 成人美女隐私免费 | 99视频免费看 | 免费国产97久久青草 | 色综合天天干 | 奇米成人网 | 一级高清毛片免费a级高清毛片 | 四虎2022 | 久艹视频在线 | 亚洲视频在线免费看 | 成年人网站免费 |