Flash lite 2.0 - 太鼓達人模組試作


最近終於把早期flash lite 1.x手機換成 可支援 flash lite 3.0 的 n96
迫不及待當然趕快來嘗鮮 看看能有什麼能耐

開發目的:太鼓達人是款簡單又可以打發時間的遊戲,唯獨的缺陷就
               是不能玩自己想聽的音樂,所以以開發可更換式模組,可由
               玩家自行更換音樂與敲擊節湊點.


1.音樂問題:不吃外部資料夾mp3, 先壓縮後匯入flash內使用

2.內部設計圖像,盡量少用向量圖減少運算,改用png代替,達到效能
   最佳化,

3.設計可由字串串列,或陣列來輸入節湊點與拍子符號等

4.擊中可分優 可 ,劣,還有待設計

5.計分設計

6.匯入音樂編號設計




  • 留言者: sayaku
  • Email: sayaku_ling@hotmail.com
  • 網址: http://blog.roodo.com/sayaku/
  • 日期: 2010-10-26 19:42:40
我最近用AS3.0來做太鼓達人的遊戲!不知要怎麼寫判斷節拍有沒有被按

到!不知道做法是怎樣??不知可否分享您的做法??




  • 留言者: sayaku
  • Email: sayaku_ling@hotmail.com
  • 網址: http://blog.roodo.com/sayaku/
  • 日期: 2010-11-03 23:32:55
所以您的意思是,我程式先寫在節拍裡面!當節拍被複製出來時去跟感應

區做碰撞!當碰撞時再去判斷指定的按鍵有沒按下!是這樣嗎??




  • 留言者: Denny
  • Email:
  • 網址:
  • 日期: 2010-12-07 19:40:04
您好,

我在知識加上看到您的解答

所以來這請教

我想請問用random的方法產生隨機的模組

可能會重複出現



如何使其出現過後的模組就不用再出現了呢(不重複)?

PV3D基礎講座I - 三分鐘快速上手PV3D(Papervision3D)



有鑑於網路上與市面上書籍所介紹的Pv3D,在一開始的步驟


對於許多使用者在建置上仍有許多疑點與不完整,在此我們

先以概觀馬上進入結果,再回頭探討各類別功能.





1.取得類別



  第一項工作,先必須有該PV3D類別,我們從開發中心列表中取得

 



  選擇最新版本 下載

 





2.放置類別位置



  將下載好的Papervision3D_2.1.932.zip,解縮後,將內容物nochumporg,

  建立一資料夾(在此我是以flash3D_class命名,可自行命名),放入該資料夾

  中,使其為

 

  flash3D_class  -- nochump

                         |

                          -- org




  (flash3D_class資料夾下包含了nochump,org兩個資料夾)

 



  2.1 最後將該資料夾放至電腦他槽內,在此是以(E:\flash3D-class)為例.



  2.2 請注意未來還有其他類別要放入時,也就是放入該資料夾內即可.





3.指定類別位置



  在Flash內指定該類別工作,打開您的Flash,從方工具列中選取



  編輯-->

 



偏好設定 -->





左側列表Actionscript-->





右側 ActionScript3.0設定




  進入後會看到三個路逕,在第一個路逕"來源路逕"中 點擊資料夾選擇我們上

  一步驟存放位置(E:\flash3D-class),完成後確認離開.





4.PV3D 成品!



  請將我提供載點內檔案下載至電腦桌面或其他位置,直接flash開啟,內容應包

  含

  點擊下載

  



  Primitives_Cube.as

  Primitives_Cube.fla



  打開Primitives_Cube.fla後,直接 ctrl+enter 播放即可!







5.若你已成功看到正方體旋轉,詳細PV3D教學講座,由第二章II開始,這時我們

  將從頭細部說明其內部運作與原理!
  • 留言者: cummings672
  • Email: x0h81ag6@yahoo.com.tw
  • 網址:
  • 日期: 2010-10-19 09:49:45
沒啥好看的相




  • 留言者: ellen144722
  • Email:
  • 網址:
  • 日期: 2010-10-23 21:08:21
骰子部份

它現在動的方式是,打開就先跑按一下後停止亂數出現數字,再按

一下直接亂數出現數字。

function eventResponse(event:MouseEvent):void{

var D1:Number = int(Math.random()*6)+1;

this.dice.gotoAndStop(D1);



}

button.addEventListener

(MouseEvent.CLICK,eventResponse);

但想要的方式是---一開始停住,按下後自己跑到停止亂數出現數

字。

骰子先用影片片段製作,名稱(dice),上面覆蓋button




  • 留言者: ellen144722
  • Email:
  • 網址:
  • 日期: 2010-10-23 21:22:50
圖片---是用影片片段(p1~p12),是所謂的矩陣嗎?

每一張圖片依內容亂數方式產生數字,得到或損失多少

錢。




  • 留言者: ellen144722
  • Email:
  • 網址:
  • 日期: 2010-10-23 21:24:10
走的方式以閃燈---擲到第3,然後第一格閃換第二格閃到第三格停

在第三格,圖片在中間放大。

走的方式以人物---一格一格走到擲的數字,由start往上順時針

走。

哪種方式會比較容易??




  • 留言者: ellen144722
  • Email:
  • 網址:
  • 日期: 2010-10-23 21:24:52
遊戲一開始玩家會有一百萬,我怎麼把flash的數值丟到jsp裡??




  • 留言者: 田淑美
  • Email: yw04474@yahoo.com.tw
  • 網址: http://www.wretch.cc/blog/nan2840112zv/6744070#7474
  • 日期: 2010-10-24 13:12:08
\(´∀`)/

ActionScript 3.0 - removeChild 與Contains

這幾天遇到一位網友它的問題是這樣的

把網頁切換頁面的功能 用addChild 來製作 不用的頁面就將它removeChild
雖然說這其實簡單到影格變化就可以完成的工作

如果今天堅持用addChild 如何實現呢

相信當按紐按下觸發 addChild 這不會是問題
問題大多在removeChild 直接remove是一個錯誤的作法
會產生 #2025: 提供的 DisplayObject 必須是呼叫者的子系。
請記得先檢查是否contains 這是關鍵


function btn1Click(evt:MouseEvent):void {
for(i=1;i<=3;i++){
if (contains(this["p"+i])) removeChild(this["p"+i]);
}

if (!contains(p1))
addChild(p1);
}

Actionscript3.0 - 呼叫Javascript開出無邊框視窗 與 2.0 getURL比較

在過去 as2.0 呼叫 網頁內javascript 藉著 getURL 來呼叫其function
在3.0時 我們利用 ExternalInterface.call 來做對外js呼叫


<!---as2.0 ------
在flash方面:

getURL("javascript:openwin(  ' 參數1 ' , ' 參數2 ' , ' 參數3 ' , ......' 參數n ' ) " );
//以單引號將參數區隔開來

在html內<head></head>間;


<script language="JavaScript">
function openwin(){
alert('hello');//這行當測試用
   window.open('http://', 'test', config='height=300,width=300');
}
</script>



<!---as3.0 ------

在flash方面:
註: 務必在server下測試 否則不會有反應

import flash.external.ExternalInterface;
//別忘了import
ExternalInterface.call("openwin","參數1","參數2"........);
//以雙引號區隔



在html內<head></head>間;





<script language="JavaScript">

function openwin(){

alert('hello');//這行當測試用

   window.open('http://', 'test',
config='height=300,width=300');


}

</script>



javascript 中的 window.open 內的參數 可自行設定 'width=??? ,height=???,scrollbars=yes/no'
你要直接寫在html內的js 透過flash呼叫 , 或是參數寫在flash傳值給js 亦可!

  • 留言者: andy10311
  • Email:
  • 網址:
  • 日期: 2010-08-22 15:08:39
你好我在知識家來問你AI的

我大約聽的懂您的意思,但是能稍微打一下讓我看看嗎?

例如怪物-主角距離 多少就開始-少距離

然後距離多少之後跳到攻擊畫面,

不好意思唷第一次做AI所以比較迷惘一點




  • 留言者: QEKTOTO
  • Email:
  • 網址:
  • 日期: 2010-09-06 19:00:24
不好意思,我是在知識+提問的人,一直到現在才找 到您的部落格



下面是您提供的網站資料,我想做…請您幫忙



http://www.hsiu28.net/html/jss.php?id=10



我的msn是qq1313qq@hotmail.com



抱歉不知道您的msn是幾號阿=口=.....

ActionScript3.0 - 網頁 子選單製作

網頁 子選單製作方法多種 , 筆者在此以最簡單的方式

來製作並且達到目的效果!









<以下程式碼貼至影格中>



bt_m1.addEventListener(MouseEvent.ROLL_OVER,bt_m1_rollover);

bt_m2.addEventListener(MouseEvent.ROLL_OVER,bt_m2_rollover);

//配合上圖來看, 藍色區塊叫1(bt_m1) , 紅色區塊2(bt_m2) ,

//當我們經過按紐時就觸發 bt_m1_rollover,也就是底下的式子



function bt_m1_rollover(e:MouseEvent):void{ menu.gotoAndPlay("menu1"); }

function bt_m2_rollover(e:MouseEvent):void{ menu.gotoAndPlay("menu2"); }

//觸發事件後的工作就是 指定 menu(事先做好的MovieClip), 指定其內容跳到 menu1標籤來播放

//聽不懂看看底下的menu 結構圖









menu.addEventListener(MouseEvent.ROLL_OUT,menu_rollout);

function menu_rollout(e:MouseEvent):void{ menu.gotoAndStop(1); }

//當我們滑鼠離開menu區域時 才將menu 隱藏 , 在此是將menu gotoAndStop(1);

//讓它停為menu的影格1 做結構性隱藏







範例下載



最新範例下載 (更正 從主選單按紐移出時也會 消失子選單)

http://www2.zippyshare.com/v/8946207/file.html

  • 留言者:
  • Email:
  • 網址:
  • 日期: 2010-08-19 15:00:26
請問一下如果我要製作FLASH 2.0遊戲,

我想做一些破關條件怎麼做呢 例如 小王掉一些特定道具,

然後 特定道具那些元件要怎麼擺,請問可以稍微教學一下嗎?

真是不好意思麻煩你了




  • 留言者:
  • Email:
  • 網址:
  • 日期: 2010-10-12 01:26:13
要請問

一個Flash 塗鴉板

想要在右邊有一個隱藏型,就是滑鼠移過去就會跑出版面(有點類似

這個)

版面裡有空白的可愛圖案, 選擇後可以拉出來著色

請問一下要如何寫這段程式, 或是有可以參考的程式嗎?




  • 留言者: triggerx
  • Email:
  • 網址:
  • 日期: 2010-10-24 14:20:27
大大您好:

http://triggerx.myweb.hinet.net/

demo在首頁第二個選項

問題是這樣的,為了主程式能更小巧,於是把角色和戰鬥動畫拆成好

幾個swf再動態載入,但問題來了,受限於頻寬有時候在load子

movie的時候人物就憑空消失了,那如果再改回和主程式綁在一起的

方式製作,要如何從元件庫中動態載入呢?(as2.0)




  • 留言者:
  • Email:
  • 網址:
  • 日期: 2010-12-27 15:41:41
你好,



想請問你,我照著你的語法去做,物件命名也和你的相同,但是輸出

時卻一直出現"存取未定義的屬性 menu", 只要有提

到menu的部份

都會出現這樣的錯誤,是我漏了哪個步驟嗎?!




  • 留言者: sosp15
  • Email:
  • 網址:
  • 日期: 2012-01-11 16:07:57
版主您好...

想請問您,"當我們滑鼠離開menu區域時 才會將menu 隱藏"

版主的範例是必須觸碰menu後移開才能隱藏menu



若是一開始將滑鼠移至A時,出現menu後卻沒有點它

此時滑鼠移至別處(例如說別的沒有選單的按鈕或連結) ,想要隱藏一開

始觸發的A_menu(沒有要點它,只是想看menu有什麼內容,看完就移向別

處)



這樣該怎麼撰寫呢?



不好意思...因為小妹是新手所以不太了解,然後也自己嘗試了好多次

就是測試不出來..可否請樓主解惑><




  • 留言者: sosp15
  • Email:
  • 網址:
  • 日期: 2012-01-12 08:59:06
大大!!!成功了!!!

原來如此啊!!

真的是非常謝謝您!!!(90度鞠躬




  • 留言者: kai
  • Email:
  • 網址:
  • 日期: 2012-04-05 15:11:23
你好

最新範例的連結似乎失效了




  • 留言者: kai
  • Email:
  • 網址:
  • 日期: 2012-04-05 16:44:58
請問一下

為什麼最新範例多加一個透明物件

移出bt_m1、bt_m2

menu區也會跟著隱藏

有多加一些什麼指令嗎




  • 留言者: kai
  • Email:
  • 網址:
  • 日期: 2012-04-05 17:00:48
不好意思

我知道是怎麼回事了

只是這樣好像會干擾到

bt_m1、bt_m2的變化

例如:

bt_m1滑入會變色、但會被透明物件干擾到




  • 留言者:
  • Email:
  • 網址:
  • 日期: 2013-07-25 22:23:41
請問

最新範例的連結失效了

能再上傳一次嗎? 感謝



不太懂 bt_m1_rollover 的選項部分要放在哪個部分

ActionScript3.0 - XML 初學講座

在這裡把一些網友常遇到XML問題 觀念做一通盤解說
列舉各種可能的情況加以說明

在此沒有高深的技術 只有靈活觀念應用~


< 將下列as3.0程式碼貼到你的影格中 >

var xml:XML =
    <ap>
         <me>
                <item>A1</item>
                <item>B1</item>
                <item>C1</item>
                <item>D1</item>
                <obj>E1</obj>
         
                <product price="215" quantity="5" />
        </me>
    </ap>
   
//程式到此就結束了 我們來看看底下trace結果


trace(xml.me.item[0]);  //A1 ,取節點裡的值
trace(xml.me.elements()[0]); //A1  ,elements用法與list相同將me下節點列表,
                                          //       在此多加了[0] 代表指定index

trace(xml.me.item.length()); //4 ,指定item.length 就是以item本身個數下去計算
trace(xml.me.length()); //1  , me同層的me個數只有一個 所以結果是1


trace(xml["me"].item[0].childIndex());  //0 , 我們這裡合併寫法 xml.me 亦可改寫為 xml["me"]
trace(xml["me"].obj[0].childIndex());  //4 , 我們在節點裡增加了obj 在obj的索引0 情況下,
                                                            // 在整體子節點索引是排第4 ,因為是從0開始計算


trace(xml.me.product[0].@price) //215  , 屬性的存取  名稱.@屬性




Actionscript 3.0 - 轉換 as2.0 createEmptyMovieClip 至3.0

在網路上你也許搜尋過,你想要快速動態建立大量MovieClip

在2.0 你會用 createEmptyMovieClip , 但是到了as3.0已經

沒有
createEmptyMovieClip



如果你要快速複製物件在你在as3.0可以用addChild方法

但是如果是想要快速動態建立空MovieClip實體



那我們就要使用到new MovieClip 並且利用空陣列將new

好的MovieClip儲存起來



//as3.0 ----------------------------------

//以下為as3.0取代 2.0
createEmptyMovieClip




var mc:Array = new Array();

for (var i:int = 1 ; i <= 99 ; ++i) {


   mc[i]  = new MovieClip();

   addChild(mc[i]);

}



要控制的目標便是  mc[n]

n -- 指的是你所設定的物件





ActionScript3.0 - 2D 彈幕講座


相信各位都玩過類以下這張圖(早期遊戲:雷電)的平面2D遊戲,

除了本身畫面之外,最重要的部份也是我們最好奇是,它的子
彈,我這邊介紹稱為"彈幕",到底是怎麼做出來的?,或許你
沒有想過這問題,或是看過沒有去多想它,或是把它當成理所
當然的一部份!事實上一點也不!


要做彈幕首先必須知道一些基礎:


1.基本的物件座標操作(敵人與子彈移動座標相關)
2.Math.sin() cos()參數應用
3.new物件與addChild後name的運用
4.removeChild相關



一樣廢話不多說馬上開始!
註:如果以下基礎觀念都不想看的話,那..請拉到最後下載範例!


1.子彈的建立

請在元件庫隨意畫一個子彈,以下圖為例為它類別命名,在此是
命名為 enemy_bullet


2.子彈的排列

子彈的排列考量到以下幾點:

2.1 子彈的旋轉角
2.2 繞半圓路線排列

2.1子彈旋轉角解說:

eb.rotation=-(90-i*(180/20));//每一個子彈旋轉角

簡單說就我們希望把rotation角度 從 90 變化到-90
180是總度數,20是你要產生的子彈數(同迴圈數)


2.2 繞半圓路線排列

到底要怎麼動態讓子彈排成一個弧形?
註:不想看數學邏輯及廢話的人請跳過此步驟!!


很簡單,我們從兩個方向去討論它的邏輯!(參考下圖)
我們若只看 y 軸,實際上它只是先往下再往上的一個路逕
我們若只看 x 軸,其實它只是一個平移一段距離的路逕



說那有什麼算法可以剛好符合這兩個需求?
有,非常好的是我們高中數學三角函數又派上用場,這時候
也許你又想回去重學你的數學了,在這裡分別應用sin跟cos
兩個簡單特性讓它們完成這項工作!!

參考以下兩張圖

(以下是sin的參數,我用紅圈標起來,當參數0-3點多的位置
剛好可以形成一個先往下再往上的函數)
對flash座標來說,數值座標越大就是往下跑.



(以下是cos,當參數是0-3.多,它的位置從1下降到-1)
剛好可以拿來當x平移距離



r*Math.cos(i*3.2/20)+enemy.x;
r*Math.sin(i*3.2/20)+enemy.y;

很簡單吧? 看不懂自己開個新檔把Math.sin拿參數進去try數據!!
這裡 r是半逕,你產生的子彈用以上參數產生的位置充其量也不過
是在-1 到1的距離在跑,這時候你只要乘上一個倍數,子彈就會擴
展開來!




3.彈幕如何散開?

以上我們製作好的彈幕是不會動的,因為實際上數據是固定的,但
我們發現,實際上子彈擴散時,變動的其實只是半逕的大小,因此
我們只要動態的改變半逕讓它不斷的增加,子彈便會射出去!

(r<300)? r+=5:r=0; //讓r半逕不斷增加超過300 則又重新開始



4.多重彈幕?

多重彈幕實計上只是發射的時間延後一個時間點而已

timer_var=getTimer()/1000;
if(timer_var>=0.3){  //希望晚0.3秒後 發射第二波彈幕
(r2<300)? r2+=5:r2=0;
ger_bullet2();
}

//當然了 如果你要一直發射很多重彈幕,你可以改進更好的寫法!



5.最重要的部份,子彈的移除!

上面的部份都理所當然的被建立發射,可是實際上在flash裡被建
立的物件並不會因此而消失.以下是建立與移除的邏輯過程!


半逕1子彈被建立 --> 半逕2子彈被建立(此時半逕1子彈仍存在) --->

於是我們在這之中加了removeChild


 var tmp_eb:MovieClip =  MovieClip(root).getChildByName("eb" + i);
       if( tmp_eb != null ){
        MovieClip(root).removeChild(tmp_eb );
        }//if
   }//for



6.補充說明

所建立的子彈在上述說明要被移除, 我們裡是使用.name的方法
來移除,當然你也可以使用removeChildAt ,指定深度,可是這樣
會太麻煩了,建議還是給它.name後再來移除name即可!

    var eb:enemy_bullet=new enemy_bullet();
    MovieClip(root).addChild(eb);
    eb.name = "eb" + String( i );



範例下載

NXT -8547 1號, 2號,3號機怪手





























3號機怪手完成!


圖片這台是我的第一台試做機, 這台叫做NXT 8547(2009)
是由樂高公司研發的樂高機器人,可程式化核心,可由
電腦藍牙遠端遙控操作.
















可變形多種組合,隨意組合成任何樣子

在網路上看到許多試做的樂高機器人,其中包含了許多模樣,最近看
了堆高機的機器人,於是我想那我來做一台怪手好了,心急之下做出
這模樣,做完了也發現了問題,(這台是打算用捲線的方法來連動把
怪手拉起)



3號機誕生,後來仔細研究了怪手的手臂液壓的連動結構,重新研究製作了
一個新怪手3號機!!





  • 留言者: 探奇自然科學教室
  • Email: touch_classroom@yahoo.com.tw
  • 網址: http://tw.myblog.yahoo.com/touch_classroom/
  • 日期: 2010-07-17 08:59:53
很棒的創作!GOOD!




  • 留言者: ray
  • Email: fray@gmail.com
  • 網址:
  • 日期: 2010-07-30 08:22:06
你真厲害 有空可以多聊聊




  • 留言者: kuma
  • Email:
  • 網址:
  • 日期: 2011-04-01 22:50:42
太酷了!

讚讚讚!

藍牙操作更酷!

ActionScript - System.setClipboard 將文字複製至剪貼簿

常常會看到網站提供 ,按一個鍵就會將flash內文字複製到剪貼簿裡
實際上它是一個騙術,為什麼這麼說呢,因為你複製的不是你所看到
的flash文字,而是寫在內部的變數內容,

不太懂對吧,我們看看以下幾行代碼.

註;\r\n (換行)

var myDATA:String="文字測試\r\n前面這符號是換行相當於shift+
enter\r\n\r\n兩個這符號是空一行";

System.setClipboard(myDATA);

//看到上面的myDATA了嗎,原來是拷貝myDATA變數內容

  • 留言者: Nakara Tuleva
  • Email: oxedoido@hotmail.com
  • 網址:
  • 日期: 2011-09-21 20:58:00
Isso!

nextframe() - 日本遊戲開發網站


http://nextframe.jp/
nextframe() 是在日本開發已久的遊戲小站, 內容包含了網站內部許多
開發人員的創作作品,非常幸運的還可以在他們的blog看到他們開發的
手稿喔!!


Actionscript - FPS (as2.0 & as3.0)

AS2.0:
this.onEnterFrame =
function() {
if (this.lastTimer != undefined) {
var
timerDiff:Number = getTimer()-this.lastTimer;
var fps:Number =
int(10000/timerDiff)/10;
trace(fps);
}
this.lastTimer =
getTimer();
};


AS3.0:

import
flash.utils.getTimer;
import flash.display.Sprite;

this.addEventListener(Event.ENTER_FRAME,GetTimerExample);

function
GetTimerExample(e:Event):void {
if(this.lastTimer != undefined){

var timerDiff:Number = getTimer()-this.lastTimer;
var
fps:Number = int(10000/timerDiff)/10;
trace("fps="+fps);

};
this.lastTimer=getTimer()
}

遊戲設計邏輯 - 炸彈超人

無意間看到網友提問這類遊戲如何設計,所以特此寫一篇給以後要製作
相關遊戲的網友做參考, (以下我要說明遊戲的部份,嚴格說與flash其實
是比較沒有關係
是遊戲製作上的邏輯設計)

大部份製作炸彈超人這類的遊戲 都採取以"地圖陣列"式的作法
不知道的話可以參考我blog裡的國外遊戲設計結構,地圖是
以數字

組合而成的陣列結構

假設今天我們地圖縮小一點只有4x4 (0是沒有任何東西,1是牆,2是障礙)




當炸彈擺在 (2,3) ,
我們預設暴炸半逕是1 ,在炸彈還未暴炸前我們就已經

可以計算出它幾秒後要炸到的地方會是

(2,2)  (1,3) 
(2,4)  (3,3) , 這幾個座標都是會被炸到,事先被算出

盡而取出該座標資訊

假設取到的是1 or 0 
則沒反應,

假設取到是2 則 從陣列中移除2 , 改為0
(假設你有藏寶物 ,一個陣列裡塞的資訊自然就多一些)

炸到
人也是一樣,事先算好的座標是否包含著當前玩家所在地的座標

若是暴炸瞬間它還是存在於該座標範圍內則game over !!

  • 留言者: 小E
  • Email:
  • 網址:
  • 日期: 2010-07-01 20:50:37
謝謝指導~

我會嘗試著用flash製作看看...

有問題可能還會來請教您...

(我就是發問這問題的人)

非常感謝




  • 留言者:
  • Email:
  • 網址:
  • 日期: 2010-11-21 20:31:36
我想請問一下~

我目前做出了陣列的地圖~

牆壁和障礙物也設定好了

但是炸彈的設置,我想要設定在格子內

(因為我人物移動是可以站立在格子和格子之間的,而我炸彈是設定放置

在人物本身站立位子)

請問我該如何設定才能使他判定我人物是偏向哪個格子,而將炸彈放置在

該格子內呢??



還有,我的炸彈爆破,假如我是製作一個爆破的動畫(佔一個格子),我要

怎讓他依照我的火力,向十字方向增加火力呢?(想是火力1就是爆破x3格

y3格的十字架 火力2 就是x4格 y4格)



希望能請您解答~感謝

Gotoandplay() -flash game 設計資源教學



過去的一些設計邏輯教學還是使用2.0 , 最近再去看過已有3.0的設計教學了,
遊戲邏輯設計是很值得參考,尤其是陣列式地圖遊戲結構的學習,各種關卡的
小技巧設計,以及最新開發的各種flash遊戲技術都在於此!!

http://www.gotoandplay.it/_articles/2004/02/tonypa_p11.php

ActionScript3.0 & 2.0 - useHandCursor 如何讓滑鼠手指消失

本篇介紹兩個版本作法 , 主要是因為 as3.0無法直接使用 useHandCursor

請看底下程式代碼:





myMC1_mc, myMC1_mc , 都是MovieClip

//--------as3.0---------------------------------------------------------------------------------------

myMC1_mc.addEventListener(MouseEvent.CLICK,traceMC);

myMC2_mc.addEventListener(MouseEvent.CLICK,traceMC);



myMC2_mc.buttonMode=true;

myMC2_mc.useHandCursor = false;


function traceMC(e:MouseEvent):void {

    trace("you clicked: "+this.name);

};



//注意到了嗎,紅色那行告訴你,要先開起button模式,才能使用Cursor=false;



//--------as2.0----------------------------------------------------------------------------------------
myMC1_mc.onRelease = traceMC;
myMC2_mc.onRelease = traceMC;

myMC2_mc.useHandCursor = false;

function traceMC() {
    trace("you clicked: "+this._name);
};



//as2.0就不必這麼做,因為本來在2.0的MovieClip設release就會出現手指圖示

  • 留言者: ㄎㄎㄎ
  • Email:
  • 網址:
  • 日期: 2012-09-05 17:30:13
好帥

Flash Lite 與 J2ME 手機開發比較





隨著MacromediaFlash Lite方面的大力推廣,這支Mobile新軍看來終于要展露頭角了。

不可避免的,衆多的開發者會將它與現有的技術放在一起品評比較一番,而這次被推上擂 台的,

是已經在移動開發領域有著堅實基礎的J 2M E。技術的比較有的時候很盲目,大家唇槍舌劍、旁

證博引了半天,却發現兩種技術根本就沒有可比性。而那些 狂熱的擁護者則往往要追求一個“A

終會代替B”的極端。

    那麽,J 2M EFlash Lite到底有沒有可比性?

Flash Lite的是否會代替J 2M E原有地位而成爲移動應用開發的首選。


  

       但是,Flash LiteJ 2M E兩者都具備自身的優勢和劣勢,這種優勢和劣勢也導致了兩者必將

在不同的領域發揮作用。http://www.design-nation.net/en/archives/000453.php 這篇文章中談到

的幾點我不再贅述,以下是我對二者區別的補充:


  1.Flash Lite擁有統一的規範,即Flash Lite Player,任何安裝了Flash Lite Player的設備都可

以播放Flash Lite文件而不需要加以編譯修改。J 2M E儘管在基礎規範(MIDP/CLDC)上相對統

一,但是大量的可選包使得程序的兼容性下降。更何况各個廠商的 KVM實現還有衆多Bug



  2.Flash Lite無疑會提供更好的用戶體驗,擺脫了MIDP lcdui甚至是手機底層的MMI實現,開

發者可以自由的設計應用程序的界面,同時也避免了使用API的困擾。相對而言,MIDPUI框架

過于醜陋,而 且功能簡單。(我現在正在試圖解决這一問題)。當然,繪製複雜美觀的界面也會

帶來資源和性能的耗費,因此開發者需要在兩者之間尋找平衡點。


   3.Flash Lite支持SVG,同時本身也是矢量格式,因而在分辨率多樣化的移動平臺上可以更

好的施展拳脚。J 2M E開發者則需要認爲解决分辨率適應的問題。在某些 狀况下,爲了適應分

辨率而帶來的工作可能非常繁複。而且使用J 2M E製作MTV類動畫幾乎不可能,逐楨繪圖方式在

J 2M E上不可能毫無顧慮的使用。


   4.Flash Cast? 現有資料太少,不知道他究竟能發揮多大的威力,但無論如何是值得期待的

。相反,Sun幷沒有推出與J 2M E完美整合的服務器技術,但事實 上,J 2M E可以和任何一種服

務器技術整合。
  
  5.Flash Lite從現在看來,功能還過于單薄。J 2M E則由JCP推動其發展,新規範曾出不窮,

從對手機底層的訪問,到多媒體的支持,從SVGG3D。儘管很多 規範真正在手機上實現還需要

一段時間,但至少我們知道,J 2M E真的可以做很多事。




  6.Flash Lite目前幷不是以native方式存在于手機中,而是用應用程序擴展的方式,儘管安裝

一個.sis文件幷不是難事,但如果廠商可以將Flash Lite Player綁定在手機中,相信推廣程度會更

好。




  7.Flash Lite仍然不適合作複雜的應用,包括商務和娛樂方面,從安全機制,存儲能力,網

絡連接等層面,Flash Lite都比較薄弱,而且可能難以改進,而在這幾個方面J 2M E要强得多。




  8.儘管簽下了NokiaSamSung,但是Flash Lite推廣的路還很長。而且,非智能手機仍然

占據了大部分市場,Nokia雖然致力于發展S60等智能手機平臺,但S40手機仍然是主要盈利點

。因此, 如果Flash Lite只能出現在S60一類的中高端智能手機上,對Flash Lite的普及可能幷

不是十分有利。




  作爲一個開發者,最重 要的是瞭解各種技術的優勢劣勢,用適當的工具完成最適當的工作

        。至于那種技術最强的問題,大可不必爭個你死我活。

Flash基礎 - flash路逕層次指定講座 ,root,this,parent


Flash路逕的指定,是Flash技術中最重要也是精華的關鍵,用來隨意操控
任何影片片段(MovieClip)的播放,然而在flash初學的階段,對於其層次
架構與複雜的影片片段指定是很難瞭解的,特此寫一篇教學,為flash路逕
做詳細介紹!




1.root,一切的根本


若你學習過基礎介紹,應知道影片片段(MovieClip)是一個類似容器的概念,
裡面可以裝載許多東西,當然你也可以為它命名。現在,我們一開打flash,
假設你新建一個檔案,一開始看到的會是完全白白一片的時間軸影格,我們
也可以把許多東西丟在這個容器內,你會問:「難到這容器它也有名子?」,
沒錯,這容器名子就是_root(as2.0),在root(as3.0改為此),所以當你一進
入flash就預設了root這個影片片段這個大容器!





底下這張圖可以看到一進入flash,在沒有任何階層的最上層場景下,時間軸
就是一個預設的MovieClip.










當這個預設的大容器root,之下建立一個新的影片片段(MovieClip)名叫 B1_mc
則他們在程式(as)路逕下的完整為


root.B1_mc (as3.0)


若是 (as2.0)寫法為

_root.B1_mc






2.看不見不代表沒有



也許你在觀摩或看到網路上許多as程式,它的物件前面開頭是沒有任何路逕



舉個例子:
假設一個影片片段建立於場景  B2_mc.gotoAndStop(1);



疑? B2_mc 的前面完全沒有任何路逕名稱,是怎麼回事?


實際上它是省略了 this , this代表物件與程式代碼同層才能以此用法,
所以它完整的程式代碼為


this.B2_mc.gotoAndStop(1);



以下我們以圖示舉幾個例子:



註:藍底框的root是代表我們在該層寫程式代碼
註:Ball.x(Ball 的x座標屬性)



當 Ball 物件位於 root 下,則我們可以指定完整路逕 root.Ball . 當然,Ball 與 root 是同一層
所以也可以寫成 Ball.x(省略了this寫法)












當 Ball位於 B1_mc(MovieClip),而as程式代碼為於 root ,我們要對 Ball操作,
這時我們就可以寫包含影片片段完整路逕 root.B1_mc.Ball












當 Ball位於 B1_mc(MovieClip),而as程式代碼為於 B1_mc ,我 們要對 Ball操作,
這時 我們就可以寫包含影片片段完整路逕 root.B1_mc.Ball
,由於 程式代碼與
Ball
同一層 所以我們又可以寫成 Ball.x 或是 this.Ball.x















當 Ball位於 B3_mc (MovieClip),而as程式代碼為於 root ,我 們要對 Ball操作,
這時
就必須寫個完整路逕 root.B1_mc.B2_mc 來指定 Ball 所在位置!





















3.隨意操縱我的上一層 parent





有人也許會反問:「如果我的程式要操作的物件是在影片片段的上一層或上上一層操作,
該怎麼辦?」,聽懂這問題的意思嗎?,不懂的話請參考下圖!



當as程式代碼寫在B3_mc影片片段下,要對 B2_mc下的物件ball操作時,對程式碼來說
是 它的父親層(父層),因此我們在Ball前加上parent,代表該操作上一層物件Ball.x
















接著下面舉一反三,當一個物件在程式碼的上上層時,我們可以連接parent,使其為
parent.parent. 看下圖的例子

















舉凡市面上所有你看過的flash,都可以由上面三種來完成一切工作,所以基礎是非常重要
若還有需要補充,歡迎各位網友提出建議,將適時的更新內容!





ActionScript2.0 - txt 傳值給 Flash ,

var my_load:LoadVars;
my_load = new LoadVars();

my_load.onLoad
= function(success) {
  mydata1=my_load.var1; //var1 var2 就是接txt 檔裡的
&var1變數值
  mydata2=my_load.var2;
  show_txt();
}

function
show_txt(){
   
trace("file1--->var1"+mydata1);
trace("file1--->var1"+mydata2);
}

my_load.sendAndLoad("123.txt",my_load,"POST");

------------------------------------------------------------------------------
123.txt
內容

&var1=abcd123&var2=123

Flash基礎 - 影格切換基礎講座



所謂影格切換基礎,是指利用不同影格的互相切換,達到特定目地的視覺效果.
不想看廢話的人,請直接跳底下解說,或至中階篇看應用.

這種方法,是簡單而快速達到切換畫面作法,當然以有程式背景的人員下去開發同樣的效果
自然有不同的方法,也許是利用函數或是各種數學方法觸發事件讓效果呈現,但不論如何
效果與呈現的結果是一致的,在開發速度與結果一致的情況下,找一個平衡點來做同樣效果
的事是很重要.


應用範圍:


  1.物理動畫迴圈流程控制

  2.網頁畫面切換

  3.遊戲角色切換與物件流程控制

  4.紙娃娃系統

  5.按紐特效變換





我們馬上來看看影格切換技術方法



註:在此我們非常重視邏輯結構,若你對此技術非常熟悉,建議你直接看中階 影格切換教學應用篇





1.跳指定影格



  影格技術首先第一項就是 跳指定影格,利用按紐觸發事件,跳指定影格



  當按紐A觸發時,跳至第2個影格

  當按紐B觸發時,跳至第3個影格



  在影格中設定以下語法:



 AS3.0寫法

 











 AS2.0寫法










 影格結構表示:(第2,第3影格為自訂內容)








別忘了為按紐命名!











測試結果!!















2.跳指定標籤



  既然能跳指定影格,又為何還需要跳指定標籤?

  如果你注意到上面的例子,假設今天你把第2個影格移動至第10影格

  你是不是又要將語法gotoAndStop(10),由2改成10呢



  但若是標籤就沒有這問題,不管你影格如何移動,它只認標籤位置



  在影格中設定以下語法:

 










 AS2.0



 





  影格標籤設定:(先用滑鼠點一下想設定的影格,在屬性(ctrl+F3)欄位設定名稱) 

      










  影格結構表示:(注意看到A_content,B_content為在影格上的標籤)

 

 








3.跳指定變數影格



  這項技術是進階的應用,將我們想跳至的變數傳遞至gotoAndStop(變數);或gotoAnPlay(變數)


  應用上多在效果呈現上,例如一個效果消失,接續另一個效果開始,這樣的效果光是gotoAndPlay影格

  是無法做到的,馬上為大家示範!



  在影格中設定以下語法:(當按紐按下觸發play(),並且傳遞變數V1 )

 

 







  




影格結構表示:





  


  記得在每一段動畫尾巴影格加上以下語法:(讓動畫離開時接變數值)

 












  範例下載(記得將副檔名改為rar)

 






4.多層MovieClip與複雜層次指定


  當你製作的遊戲,或網站內容結構越來越複雜時,你要操控的影格不會
  永遠都在最外層root影格,也許你做了許多影片片段(MovieClip),裡面
  又包含了許多內容,要對其做操控.


  在影格中設定以下語法:



  












  指定 MovieClip(root)之下的Main_mc , 如果你是as2.0慣用者記得 root.Main_mc(會顯示未定義錯誤)


  MovieClip(root).Main_mc.gotoAndStop();
  或省略root寫法

  Main_mc.gotoAndStop();



  若你對flash指定路逕 還不熟悉,可以先去看flash路逕指定篇  

  影格結構(外層): 我們新建一個MovieClip,名叫 Main_mc ,記得在屬性命名








  



   

 



 



   













Main_mc內部結構


 

   




  範例下載(記得將副檔名改為rar)

 

遊戲專題設計02

每當期末到了, 一堆專題作業又開始求救 , 這次設計是一個小遊戲
一共分為四關卡

這次設計比較大的挑戰應該是某幾個關卡, 子彈發射,與彈道設定
與敵人追逐 AI 等邏輯演算設計