討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
我的球不會動><
更改我的閱讀文章字型大小
作者 : fcsd9822(阿瞬)
[ 貼文 9 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/5 下午 02:14:55
我寫了程式有一個物件,他會隨著時間移動,然後分別是1.往上移動 2.往下移動 3.往左移動 4.往右移動
然後,我又寫了一個物件,內容是他會隨使用者的心意去跑,然後追到隨時間移動的物件的時候,會加分
結果我的球(玩家操縱的),有時候不會動,請問是什麼原因??
-------------------------我的程式--------------------------
 if (game.game_lift.x == -79 && ball.x == 161)
 {
  SC ++;
  TT.text = String(SC);
 }
 else if (game.game_right.pic.x == 79 && ball.x == 319)
 {
  SC ++;
  TT.text = String(SC);
 }
 else if (game.game_dn.pic.y == 79 && ball.y == 479)
 {
  SC ++;
  TT.text = String(SC);
 }
 else if (game.game_up.pic.y == -79 && ball.y == 321)
 {
  SC ++;
  TT.text = String(SC);
 }
---------------------------------------------------------

以下我把我發現的問題一一提出一下


1.假如我把我的程式,放在此程式上面,會變成"球無法移動"!!
所以我自己的判斷是程式卡在"我的程式",所以無法向下執行"
------------------------確定可以的程式----------------------------
 ball.x += -XX*6;
 ball.y += YY*6;
 //---------X軸-------
 if (ball.x > 319)
 {
  ball.x = 319;
  XX = 0
 }
 if (ball.x < 161)
 {
  ball.x = 161;
  XX = 0
 }
 //--------Y軸-------
 if (ball.y > 479)
 {
  ball.y = 479;
  YY = 0
 }
 if (ball.y < 321)
 {
  ball.y = 321;
  YY = 0
 }
---------------------------------------------------------------

2.那假如我把我的程式,放在此程式下面,則會變成"球移動了,卻無法計算分數"
所以我自己是判斷程式,他並沒有執行"我的程式"



3.那假如,我今天只在動畫裡面放置game_lift,讓他移動,並且將程式改成(這邊,我只有放往左移動的物件)
 if (game.game_lift.x == -79 && ball.x == 161)
 {
  SC ++;
  TT.text = String(SC);
 }
------確定可以的程式-------------(放入上面確定可以的程式的意思)

則程式會在球撞到我指定的邊邊的時候,開始SC一直往上加,而非只加一次
簡單的說會正常執行,我要的結果



4.那假如,我今天在動畫裡面放置game_lift,game_right,game_dn,game_up,讓他移動,並且程式依然是(這邊,我則是放置了全部的物件,但是第一個是lift)
 if (game.game_lift.x == -79 && ball.x == 161)
 {
  SC ++;
  TT.text = String(SC);
 }
------確定可以的程式-------------

則程式一開始會動,但是在跑完lift的動畫之後,我的球又突然不會動了,我則是不知道為什麼><



5.那假如,我今天在動畫裡面放置game_right,game_lift,game_dn,game_up,讓他移動,並且程式依然是(這邊,我則是放置了全部的物件,但是第一個卻不是lift)
 if (game.game_lift.x == -79 && ball.x == 161)
 {
  SC ++;
  TT.text = String(SC);
 }
------確定可以的程式-------------

則程式,從頭到尾都不會動,就算跑到lift的動畫的時候,球依然不會動
作者 : kaikai0428(小紀)
[ 貼文 32 | 人氣 0 | 評價 80 | 評價/貼文 2.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/10 下午 04:33:41
首先..我覺得你這篇有點雜亂..變數命名要清楚才行 不然看的人會看不懂

盡量不要用像這樣 TT、XX的命名法 寫code其中一項重點是易讀性 未來也易於維護

game.lift = game.left、 game.dn = game.down

然後如果要測試哪段程式碼有問題,建議你先一步步做 利用斷點或是trace()直接看到底走到哪了 不要用假設、猜的

看不太懂你的game.lift.x == -79 && ball.x ==161是什麼意思呢?

如果是要用座標偵測碰撞 我比較建議用偵測範圍大於、小於 否則移動也許不會剛剛好到你要的點 那就出現bug

以上小弟愚見 請多多指教

作者 : kaikai0428(小紀)
[ 貼文 32 | 人氣 0 | 評價 80 | 評價/貼文 2.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/10 下午 04:52:11
BTW 建議你可以看看 松崗的 Flash ActionScript3 殿堂之路 這本書,

裡面講解的很清楚 不然在網路上發問可能會拖延你的進度
作者 : fcsd9822(阿瞬)
[ 貼文 9 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/10 下午 07:11:13
問題解決了,不過解決的方法很奇怪,也不知道為什麼~~

至於你說game.lift.x == -79 && ball.x ==161
是我解釋不好,不好意思
我有設定,場景的邊界,如果超過的話,會停下來,並且,電腦的球,是一定會再我指定的時間時等於-79,因為我在電腦裡面這樣寫
也就是說,我只是想要判斷,玩家有沒有再指定的時間之內,追到電腦的球

if (ball.x > 319)
{
ball.x = 319;
XX = 0
if (game.game_ri.pic.x ==79)
{
Ttimer.SC = Ttimer.SC +100;
TT.text = String(Ttimer.SC);
}
}
至於解決方法如上
我不要把game.lift.x == -79 && ball.x ==161寫在一起,我把game.lift.x == -79的訊息包在ball.x > 319裡面的話
電腦就會跑自己的,玩家也可以操縱自己的球去追了

只是不知道為什麼,這樣問題就解決了......

然後不用lift,right...之類的,純粹只是因為很怕用到保留字,出現error......


至於,為什麼程式會變的亂七八遭
是因為我不知道問題出在哪,只知道,一段程式是正確的
然後加了一段判斷程式之後,就沒反應

於是我測試了

將判斷程式放在正確程式上面
將判斷程式放在正確程式下面
將判斷程式分開放入正確程式中

我po一大段,只是想表示上面那三行,所以讓你們閱讀不快,深感歉意~~
作者 : fcsd9822(阿瞬)
[ 貼文 9 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/10 下午 07:11:33
問題解決了,不過解決的方法很奇怪,也不知道為什麼~~

至於你說game.lift.x == -79 && ball.x ==161
是我解釋不好,不好意思
我有設定,場景的邊界,如果超過的話,會停下來,並且,電腦的球,是一定會再我指定的時間時等於-79,因為我在電腦裡面這樣寫
也就是說,我只是想要判斷,玩家有沒有再指定的時間之內,追到電腦的球

if (ball.x > 319)
{
ball.x = 319;
XX = 0
if (game.game_ri.pic.x ==79)
{
Ttimer.SC = Ttimer.SC +100;
TT.text = String(Ttimer.SC);
}
}
至於解決方法如上
我不要把game.lift.x == -79 && ball.x ==161寫在一起,我把game.lift.x == -79的訊息包在ball.x > 319裡面的話
電腦就會跑自己的,玩家也可以操縱自己的球去追了

只是不知道為什麼,這樣問題就解決了......

然後不用lift,right...之類的,純粹只是因為很怕用到保留字,出現error......


至於,為什麼程式會變的亂七八遭
是因為我不知道問題出在哪,只知道,一段程式是正確的
然後加了一段判斷程式之後,就沒反應

於是我測試了

將判斷程式放在正確程式上面
將判斷程式放在正確程式下面
將判斷程式分開放入正確程式中

我po一大段,只是想表示上面那三行,所以讓你們閱讀不快,深感歉意~~
作者 : kaikai0428(小紀)
[ 貼文 32 | 人氣 0 | 評價 80 | 評價/貼文 2.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/18 下午 02:38:15
親愛的阿瞬 我絕對沒有要冒犯的意思...望你別介意

只是一般我在公司 同事們都是使用Flex來做,所以都是以class為基礎,

基本上好的命名也會讓你日後維護較容易

我之前也會參考網路上的esabear大大 他是as3的高手! 他好像就是直接使用flash製作

建議你可以去看看他的範例 講解清楚 也有原始碼可以下載~

以上小弟愚見 請多指
作者 : fcsd9822(阿瞬)
[ 貼文 9 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/25 下午 12:43:23
奇怪,我說話,真的有那麼像是生氣的樣子嗎??

有人回我,我都很高興,雖然有時候是批評,不過那也應該是我自己的問題

Flex??我查查看,我也有用class,但是非常不熟,這是我上玩課之後的第二個程式,第一個程式有用過class,但是用的很不順手,想說這是小遊戲,所以並沒有特別想在用class,我看 我還是找時間再去研究一下好了

esabear,了解,感謝您的回答^^
作者 : kaikai0428(小紀)
[ 貼文 32 | 人氣 0 | 評價 80 | 評價/貼文 2.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/26 上午 10:19:42

我不太清楚直接用flash製作的差別在哪 可能是程式碼控管的部分吧 因為flash隨時隨地都可以在影格加入程式碼

基本上我們這邊的做法是利用flash處理美術資源 透過讀取SWF或是匯出.swc

然後丟到Flex處理,程式碼也幾乎都在flex 少數特殊情況必須寫在MovieClip裡面的程式碼 才會在flash處理

另外Flex很好用的原因是名稱你幾乎不用打,只要已經定義過的按下 ' alt+/ '、' : '、' space '它就會跳出選項可以直接選。

而class是為了物件導向(Object-oriented programming : OOP) 詳細好處你可以上網査査

還是建議去找找(Flash ActionScript3 殿堂之路)那本書看 講的滿清楚的哦~
作者 : member001(member one)
[ 貼文 178 | 人氣 0 | 評價 1150 | 評價/貼文 6.46 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/26 下午 05:43:39
沒有完整的fla,不能太肯定原因。

game.lift.x == -79 && ball.x ==161

是用來作邊界/碰撞判斷的嗎?

若是,最好改為>=或<=。有時動畫跑得快,過了頭而不知。邊界/碰撞判錯了便可能有奇怪的結果。

Flash是用來作動畫為主的應用,Flex是用來作一般應用。語言都可用AS3,各有強處。
作者 : fcsd9822(阿瞬)
[ 貼文 9 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/27 上午 01:55:19
沒有完整的fla,不能太肯定原因。

game.lift.x == -79 && ball.x ==161

是用來作邊界/碰撞判斷的嗎?

若是,最好改為>=或<=。有時動畫跑得快,過了頭而不知。邊界/碰撞判錯了便可能有奇怪的結果。

Flash是用來作動畫為主的應用,Flex是用來作一般應用。語言都可用AS3,各有強處。

=================================================
基本上,問題已經解決了,我想我上面有提過,只是基於好奇心,所以想要知道為什麼而已

如果寫很多if,後面就沒反應,這是我自己推倒出來的結論,因為如果改用少數的if,去寫,程式就會正常執行

我之前也愈過,很誇張的情況

我寫了一個程式,內容就
if(){

}
if(){

}
就執行失敗,我還以為是我程式裡面有問題,還上網問,別人也說沒問題
後來我改成
if(){

}
else if(){

}
程式就正常執行,網路上的其他人也覺得莫名其妙~~

game.lift.x == -79 && ball.x ==161
至於這行並不用擔心,因為我是故意設計成等於
因為,我本身的程式,是監測使用者的重力加速度,如果他利用重力讓球到邊界,或是跑出,那麼會自動讓重力加速度=0,並且會等於邊界game.lift.x = -79;
然後因為他剛好等於邊界,所以我自己指定ball.x = 161,讓玩家的球會重疊到遊戲指定的位置才會加分
所以因為是我自己指定的,所以絕對不會超過~~

至於你說的>=我則是寫在重力加速度那邊~~

Flex,原來是跟我想像的東西不太一樣,等我最近把手上的java解決掉,我去查一下,聽起來好像很不錯的樣子^^
 板主 : 徵求中
 > Flash/Action Script - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Flash/Action Script - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Flash/Action Script
1 abgne 600 
2 jerry 480 
3 hsinnan 330 
4 Ben 220 
5 200 
6 kenny 180 
7 Allen 120 
8 svcnet 120 
9 Raymond 110 
10 小紀 80 
Flash/Action Script
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875