請問如何重複產生相同的圖片? |
答題得分者是:Eruruu
|
t20004571
一般會員 發表:2 回覆:3 積分:1 註冊:2007-06-22 發送簡訊給我 |
小弟我有作一個跳舞機的小遊戲
在舞標的部份卡住了... 現在的解決方法是 用4個Image物件載入相同的圖片 每個Image都被一個Timer所控制 最後再由一個Timer控制所有的Timer 總之工程浩大而且還會LAG!! 所以就在想不知道相同的圖片可不可以重複產生 然後移動的方向跟格數也都相同 使用以後就刪除,這樣應該比較不會LAG吧 不知道表達的完不完整... 先貼一些我寫的程式 (控制Timer用) void __fastcall TForm1::Timer17Timer(TObject *Sender) //最主要的Timer { sprintf(s,"%.1f",q); Label3->Caption=s; q=q 0.1; music(); switch(g) { case 1:if(Label3->Caption=="1.0"){Image30->Visible=false;Timer39->Enabled=false;g ;}break; case 2:if(Label3->Caption=="2.9"){MediaPlayer1->Play();g ;}break; case 3:if(Label3->Caption=="4.2"){Timer9->Enabled=true;g ;}break; //當Label3=4.2時啟動Timer9 case 4:if(Label3->Caption=="4.4"){Timer10->Enabled=true;g ;}break; case 5:if(Label3->Caption=="4.6"){Timer11->Enabled=true;g ;}break; . . . case 336:if(Label3->Caption=="112.0"){over();}break; } } (控制Image用) void __fastcall TForm1::Timer9Timer(TObject *Sender) { Image13->Top=Image13->Top-9; if(a==1) { if(Image13->Top < 1) { if(CGauge1->Progress == 0) { over(); } Image13->Top=600; Timer9->Enabled=false; miss(); } } else { if(Image13->Top < 1) { Image13->Top=600; Timer9->Enabled=false; a=1; } } if(Image44->Visible==true) { v=0; Image39->Visible=false; Label7->Visible=false; } } 像這樣控制Image的還有3個 不過這才只是代表左邊的舞標 所以我總共用了16個Image跟Timer才笨笨的做出來 希望各位前輩們可以告知小弟我重複出圖的方法!! |
juneo
高階會員 發表:103 回覆:190 積分:118 註冊:2004-05-13 發送簡訊給我 |
可以用多執行緒解決
站長有提供一個非常好用的多執行緒function http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=76536 因為你要的功能我想到delphi書上多執行緒那章有各賽跑的範例 用亂數決定速度 四個人隨機看誰會先到終點 改一下應該可以用 提供給您參考, |
t20004571
一般會員 發表:2 回覆:3 積分:1 註冊:2007-06-22 發送簡訊給我 |
感謝juneo大大提供的方法
不過小弟我對delphi不太會用... 現在我的想法是 舞標總共分為上下左右四個 而且每次執行出現的舞標都是相同的時間對應相同的位置 不是用亂數決定要出現上還是下等... 所以有時候在0.1秒跟0.2、0.3的時候都會出現"左"的舞標 這樣我就必須先做出Image1、Image2、Image3三個圖片(都相同的)待命 然後再0.1秒的時候讓Image1開始移動 0.2秒是Image2、0.3秒是Image3 如果只用Image1的話會無法抵達目標位置 因為Image1雖然在0.1秒時已經開始移動了 但還沒抵達目標位置我就在0.2秒命令Image1"開始移動" 他就會又跳回去起點開始移動 這樣就沒辦法玩了... 所以我就在想不知道有沒有方法可以讓我只需要設計Image1 還可以讓Image1所載入的圖片在0.1、0.2、0.3秒時同時在畫面上移動 不知道繼承可不可以達成?? 最後還是感謝juneo大大提供的方法 小弟我會試著去了解看看^^" |
juneo
高階會員 發表:103 回覆:190 積分:118 註冊:2004-05-13 發送簡訊給我 |
|
Eruruu
一般會員 發表:9 回覆:13 積分:9 註冊:2006-07-22 發送簡訊給我 |
跳舞機?
跳舞機的每個舞標移動速度不是都一樣嗎,用一個timer就行了吧 舞標出現的順序?如果是我 會用一個矩陣,1~4代表上下左右,後面再加上 下一個舞標出現的間隔毫秒,像 1,100 2,200 也可以試看看像十年前街頭布袋戲的背景捲法,用兩張大圖並排向上捲,上面那張捲完就放到另一張下面繼續向上捲 再把4張放舞標的小圖用Draw畫到背景上, BackGround1->Canvas->Draw(X,Y,Image1->Picture->Bitmap); 這樣就完全不會lag了。 要先 Form1->DoubleBuffered=1; 之後圖片的移動才不會閃爍
------
わたしは..わたし |
t20004571
一般會員 發表:2 回覆:3 積分:1 註冊:2007-06-22 發送簡訊給我 |
|
Eruruu
一般會員 發表:9 回覆:13 積分:9 註冊:2006-07-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |