![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
|
主題工具 | 顯示模式 |
|
|
#7 (permalink) |
|
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
If RectBrick.W > RectBrick.H Then
SpeedText.Text = Int(RectBrick.H / 3) Else SpeedText.Text = Int(RectBrick.W / 3) End If 因為磚塊大多情況是長方形 (分 RectBrick.W 與 RectBrick.H) 而一步移動距離(SpeedText.Text)是不分長寬的 所以就取最短的一邊 (RectBrick.W與 RectBrick.H 比較) 給 SpeedText.Text 為了使移動時 不移動過頭 (到磚塊裡) Q:上述那些600、240、720各代表啥意思呢?? A:只是個老鼠(Shape(Index) )於休息室位址的定位 (水平位址 Shape(Index).Left ) strMapFile = CommonDialog_Click(Me) 是呼叫WinAPI的 對話框 來賦予地圖檔名 這裡捨棄 VB提供的 CommonDialog控制項 元件,目的是如此就不需考慮該PC有無 comdlg32.ocx (VB的插件) 您可以在這三行設下中斷點 strMapFile = CommonDialog_Click(Me) strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1) If strMapFile = "" Then strMapFile = Dir(App.Path + "\" + "MAP*.txt") 來體會 strMapFile = CommonDialog_Click(Me) strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1) 的作用 ( 其實照理講 strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1) 是多此一舉 但因為 CommonDialog_Click(Me)設計的關係 會傳回一個 257字元長度的字串 ※ 原因在CommonDialog_Click含式的 OpenFile.lpstrFile = String(257, 0) 這一行 所以利用 strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1) 來捨去 .txt 以後的 字串 ※ chr(0) 無法用 trim 來捨棄 ) StringSplit_Str是一個自制的字串分割 函數 StringSplit_Str(欲作用的字串, 分割用參數, 傳回第幾分割字串) 其實VB 有一個 Split 保留字 只是他傳回值 是一個陣列變數 會傳回全部子分割字串 (要用第幾個就用( )來指定第幾分割字串,也可 Split(欲作用的字串, 分割用字串)(傳回第幾分割字串) 方式來直接指定 傳回第幾分割字串 但花費時間不變 ) 因此效能不及個人的 StringSplit_Str (有測試過) strMapFile, "1\0$.txt", 1 表示 用 .txt 針對 strMapFile 做對半分割 傳回 前半段+".txt" 字串 (如是 "1\0$.txt", 0 就是取後半段) (1\0$ 後的字串是切割辨識字串) 如果 strMapFile= "c:\temp\Map100.txt %#@%@# " 就會回傳 "c:\temp\Map100.txt" 而 StringSplit_Str 還有其他用法 比如 StringSplit_Str(strMapFile, chr(13)+chr(10), 5) 會傳回第5行字串 (因為 chr(13)+chr(10) 是換行字串,也可用vbCrLf 或 vbNewLine ) 如沒有第5行即傳回 "" 空字串 |
|
|
送花文章: 2066,
|