AS2.0 - Loadvar ,Flash 與 PHP 溝通


[在本篇適用於已了解 PHP 與 SQL 操作的開發者]


Flash 與 PHP 關係邏輯描述如下:


1.在 Flash 利用 Loadvar 產生變數用來接取 PHP 傳來的值

2.PHP 在此的工作利用迴圈將繞得變數值塞進一個變數之中(需用特殊字元區隔)

3.當flash loadvar做onload時,我們就接收php傳遞來的變數集合

4.將此變數集合拆解成n個字串,塞回陣列做應用.

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

my_load.onLoad = function(success) {

  phpdata_string=my_load.phpdata; //將 PHP 集合了所有資料於phpdata,傳至phpdata_string;
  
  pd=phpdata_string.split("@"); //將取得phpdata_string利用split拆解成 pd 陣列 以 @ 符號區隔
                                //事先就要在php繞迴圈時 ,把 @ 符號塞進去,當然你也可以使用其他特殊符號
                                //避免文字中出現@與區隔符號錯分的情況.
}

php for flash - MySQL5.0

Install MySQL-5.0.27

Download
Web Site: http://www.mysql.com/downloads/mysql-5.0.html
找 Windows downloads下載最新版 MySQL 5


Insatll
01.解壓縮 mysql-5.0.27-win32.zip
02.執行 SETUP.EXE
03.按 Next
04.選擇安裝模式 Complete 安裝所有程式(MySQL 不會自動建立資料夾)
(可以先選擇 Custom 更改路徑D:\webserver\MySQL,在選 Complete 安裝所有程式)
按 Next
05.按 Install 開始安裝
06.登入MySQL.com會員或加入MySQL.com會員

或是直接按 Skip Sign-up 不加入MySQL.com會員
(直接跳過會員)

07.最後勾選 Configure the MySQL Server now 執行MySQL設定,
   滑鼠請按一下 Finish,完成安裝

----------------------------------------------------------------------

08.接著會跳出設定精靈,選擇 Standard Configuration 標準設定後,滑鼠按一下 Next

09.勾選 Install As Windows Services 安裝 MySQL 成為Windows服務,
   請選擇伺服器名稱為 MySQL

   勾選 Launch the MqSQL Server automatically 開機時自動執行 MySQL
   勾選 Include Bin Directory in Windows PATH 將路徑加到系統環境變數
選好後滑鼠按一下 Next


10.接著設定資料庫最高權限管理者,請選擇 Modify Security Settings 更改安全設定
New root password 設定新的密碼並 Confirm 再輸入一次確認
依你的習慣決定是否勾選 Root may only connect form localhost
勾選後你的 root 帳好只能在本地端(localhost)連線,也就是除了你的電腦外,
其他人都不能使用 root 帳號連線MySQL資料庫
或者
進階使用者的可以勾選 Create An Anonymous Account 自己設定新的帳號,
不過詳細的設定筆者就不寫了
填好後滑鼠按一下 Next
11.滑鼠按一下 Execute 開始執行設定
滑鼠按一下 Finish 完成安裝

php for flash - phpmyadmin

Install phpMyAdmin-2.9.1.1 (轉載至竹貓星球)

Download
WEB Site: http://www.phpmyadmin.net
下載最新版 phpMyAdmin-x.x.x-php.zip


Install
01.直接將下載來的 phpMyAdmin-2.9.1.1-all-languages,
解壓縮出其中的資料夾「phpMyAdmin-2.9.1.1-all-languages」,
並將此解壓縮出的資料夾改名只剩下「phpMyAdmin」。
02.將整個 phpMyAdmin 資料夾,複製到 D:\webserver\Apache Group\Apache2\htdocs 目錄下。
03.進入 D:\webserver\Apache Group\Apache2\htdocs\phpMyAdmin\libraries找到config.default檔案,用純文字檔模式(.txt)打開它。
05.利用編輯器的收尋功能,找到$cfg['Servers'][$i]['compress'] = FALSE; 將其修改,
改成為 $cfg['Servers'][$i]['compress'] = TRUE 。
04.利用編輯器的收尋功能,找到 $cfg['Servers'][$i]['auth_type'] = 'config'; ,
並將 config 改為 http。
05.接著搜尋 $cfg['Servers'][$i]['user'] = 'root'; 將其 root 拿掉,
變成 $cfg['Servers'][$i]['user'] = ''; 。
06.接著至 d:\webserver\php5 目錄下找php.ini檔案,並用編輯器開啟它,
用搜尋功能找 session.save_path = "" ,將其改為
session.save_path = "d:\webserver\Apache Group\Apache2\tmp" 。
07.至d:\webserver\Apache Group\Apache2\ 目錄下新增一個新資料夾名為 tmp 。
08.開啟瀏覽器輸入網址 http://localhost/phpMyadmin 就會出現要求輸入帳號及密碼視窗,
輸入帳號:root 密碼:(在安裝mysql時所輸入的密碼),然後就可登入管理畫面。

php for flash - php+apache 完全安裝手冊

請網友完全按照下列步驟來做 , 就不會出錯

軟體版本:
apache_2.2.14
php-5.2.11-win32-installer.msi


01.解壓縮 或安裝 php5.2.0 or php5.2.2 至C:php

02.將 php.ini-dist 檔案名稱更改為 php.ini,<---本來php下已經是php.ini就不用改了


03.用筆記本開啟 php.ini 搜尋 register_globals = Off 改成 register_globals = On,


04 搜尋 ;include_path = ".;c:\php\includes", 找到這行 把前面;去掉 後面改為底下
   (改為你安裝的根目錄  include_path = "c:\Apache Group\Apache2\htdocs" )

05.接著設定"網頁的根目錄",請搜尋 doc_root =,在等號後加入"C:\Apache Group\Apache2\htdocs"


06.接著設定php延伸模組所在的目錄,搜尋 extension_dir = "./",
將預設值 "./" 改成 "C:\webserver\php5\ext"


07.再搜尋 extension=php_mbstring.dll
把 extension=php_mbstring.dll 前面的;去掉
使用二碼中文顯示,開啟mbstring,使用比對,搜尋,置換時才不會有非預期的結果
(該檔案找不到沒關係)

08.再搜尋 extension=php_mysql.dll
把 extension=php_mysql.dll 前面的;去掉
使 MySQL 函數庫可以運行
(有些時候你會發現它已經幫你去掉了;)


09.再搜尋 ;session.save_path = "/tmp"
把 include_path 前面的;去掉
並在等號後 "/tmp" 取代成 "C:\webserver\Apache Group\Apache2\tmp"
使用檔案總管在你的d:\ 開新資料夾,名稱為 tmp



10.完成以上步驟後將 php.ini 存檔 (注意不要存成 php.ini.txt)


11.進入 C:PHP 複製 libmysql.dll 與 php5ts.dll 到系統安裝目錄下的 system32
( WIN2000 預設是 C:\WINNT\system32,WIN XP 預設是C:\WINDOWS\system32)
php5ts.dll 以使您的 PHP 作為 Apache 的 PHP-Module
libmysql.dll 搭配步驟7的extension php_mysql.dll 後PHP5才能使用MySQL資料庫


12.開啟 Apache 的配置檔 httpd.conf

搜尋 DirectoryIndex index.html
(設定預設首頁,可以更改前後順序將 index.php 加到 DirectoryIndex 後面,中間要空一格)


13.於配置檔最後面加入以下內容存檔後關閉
# For PHP 5 do something like this:
LoadModule php5_module "C:/php/php5apache2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/PHP"
(你若是apache2.2 後面就自己改為 php5apache2_2.dll
變成 LoadModule php5_module "C:/PHP/php5apache2_2.dll"

14.接著配置系統環境變數:
在桌面 "我的電腦" 上按滑鼠右鍵 → 內容 → 進階 → 環境變數
編修 "系統變數"(用;分隔)
編輯變數名:PATH
加入變數值:d:\webserver\php5\;d:\webserver\php5\ext\;%PATH%

15.點選 Restart 重新啟動 Apache 之後就完成了 PHP 安裝




apache 下 的httpd.conf設定

01.出現網頁亂碼時:
編輯 httpd.conf 檔,有兩種方式可用
a.將 AddDefaultCharset 那一行mark掉,這樣apache就不會控制網頁預設編碼,
而是交給瀏覽去判別,例如:#AddDefaultCharset Big5。
b.指定預設編碼,不理會頁面中或瀏覽器設定的編碼,例如:永遠以UTF-8顯示頁面
AddDefaultCharset UTF-8。

02.設定 Apache 網頁目錄權限:
開啟 Apache 的配置檔 httpd.conf,你可以設定的目錄在沒有預設首頁時,
是否顯示目錄結構,例如:不要顯示( 根目錄)下的網頁目錄,以增加安全性時,
請查找該內的 Options FollowSymLinks,改成 Options None 即可。

flash actionscript getTimer();

曾經看到有網友用影格來做秒數倒數(計時) ,我也曾想過用影格做Timer區間 ,

用影格這樣做雖然獨具自己作法 

但這樣做太克苦  我們用getTimer()會輕鬆許多;



reset_var=0;

onEnterFrame=function(){


now_var = getTimer()/1000-reset_var;

//getTimer();這函數會直接取得計數 1000, 2000 ,3000 . ...單位是(毫秒)
//又希望它變成秒數顯示 再除以1000,後面的reset_var用來取得當前時間


now_var = 30-now_var;

//now_var產生1,2,3,4的數列,......
//如果我們用30 去減1234,會發現 數列變成 29 28 27....
//在此的30當然也可以自行修改成別的數據



trace(now_var) //直接trace結果 你可以輸出到一個動態文字裡



}


reset_bt.onPress=function(){ //在場景上製作一個 按紐元件 命名為 reset_bt

   

reset_var=getTimer()/1000;

//把當前時間除以1000 給reset_var
//讓 上面 當前時間 與 目前時間 相減 ,自然就會歸0

}                         












如果有人單純想延遲(秒數)時間 又不想key太多as 可以用如下:



setTimeout(call_delay,3000)

//setTimeout有兩個參數 ,前面是指定呼叫的函數名稱 ,

後面是延遲的秒數 記得要乘上1000 它是以毫秒為單位

//這裡打上3000 就表示3秒的意思



function call_delay()

{

 trace("delay 1 second")

 //

}



setTimeout另一種用法 如下:



setTimeout(call_delay,3000,"字串1","字串2") //後面是傳遞至 call_delay的兩個字串值



function call_delay (arg1,arg2) {//設兩個變數來接值

 trace(arg1+"  "+arg2);

}

flash as 角色移動

角色所謂移動 只是對某個元件的 x,y變量增加數據
如果一個物件叫hero,它具有x的變量 ,當我們增加x時 它便會往右移動

那寫法可以分為兩種 ,一種是寫在影格控制,一種是寫在元件上
(初學者可以先寫在影格上 練習 , 但開發不會就此停止為了日後維護與邏輯 我還是建議寫在 元件上)


影格的寫法 如下:

onEnterFrame=function(){

  if (Key.isDown(Key.RIGHT)) { //當鍵盤按下 "右"時 觸發以下

       hero._x+=5; //對hero這movie元件的x變量 每次按下時 增加5;
                   //別忘對元件命名叫hero
  }
}//以此類推 上下左右


元件的寫法 對物件點選 按F9

//先來一段初始化
onClipEvent (load) { 

  power=5;


onClipEvent (enterFrame) {

  if (Key.isDown(Key.RIGHT)) {
    _y+=power;

  }

}

之後你可能會覺得這樣很無聊,還想加點磨擦力

onClipEvent (load) { 

  power=5;
  xspeed=0;
  friction = 0.9;//磨擦力
}


onClipEvent (enterFrame) {

  if (Key.isDown(Key.RIGHT)) {
     xspeed += power;
  
  }
  xspeed *= friction;
  _x += xspeed;
}

當然這下去沒完沒了 還有許多 重力 反作用力 滑行距離 等相關物理運動 , 有興趣再到msn找我討論
u2420123@hotmail.com

  • 留言者: 小小頭
  • Email: frank80532@yahoo.com.tw
  • 網址:
  • 日期: 2012-08-16 10:37:51
請問一下有FLASH的問題可以私訊密你嗎




  • 留言者: abse0811
  • Email:
  • 網址:
  • 日期: 2012-10-18 16:20:12
我想請問你關於FLASH人物移動的部分,請問可以私訊你嗎??




  • 留言者: abse0811
  • Email:
  • 網址:
  • 日期: 2012-10-19 10:50:09
我想要寫像大富翁那種擲骰人物就能一步一步移動到格子

但我不知道該使用哪些函數,我用AS3.0寫的,

不好意思能給我一些建議嗎?




  • 留言者: abse0811
  • Email:
  • 網址:
  • 日期: 2012-10-22 16:59:01
版主可以加我的即時通嗎??

abse0811



我們的遊戲內容,是要人物走動到那格觸發買地賣地,或是說走到某格

會觸發題庫問答,項傳統的大富翁遊戲,有機會命運,但在人物走動的

部分,我本來是先把X,Y 軸的值寫成陣列,再用IF判斷式加減骰子的

數字,然後將人物的X Y帶入陣列值,不過就變成人物用直接漂到定位沒

有走動的感覺。

我有查詢網路我看到有位移可以使用的語法 Matrix.Translate 但

是不知道對於大富翁人物移動是不是可以用此語法寫,所以才想要問看

看是不是有推薦的寫法可以讓人物移動,我們的地圖格子大概是一個正

方形。

flash ascript (迴圈簡化)

_root 跟 this :  如果你對一個物件控制時 , 有時需要路逕

譬如 _root.main_mc.gotoAndStop()  或是  _parent.gotoAndPlay()
這些都是路逕的控制 , 只是一個是絕對路逕 一個是相對路逕

如果一個物件 與該語法 同層時 , 則可以省略 路逕 譬如:

gotoAndPlay();   or  main_mc.gotoAndPlay 
(別懷疑 它只是省略了 this.gotoAndPlay  ,   this.main_mc.got...................)

那你說到底 何時 一定強制要加this
就在它用迴圈去繞實體物件名稱或變數時 , 這就變成了關鍵

你有 10個按紐 名稱為 bt1  bt2  bt3 ......bt10 ,

傳統作法

bt1.onPress=function(){   }<---來觸發事件
bt2.onPress=function(){   }
bt3.onPress=function(){   }

 一個一個寫太隴長又費時 , 因此我們用迴圈來繞

for(i=1;i<=10;i++){
this[ "bt" + i ].onPress=function(){}
}

注意到了 前面開頭  [  ]  它前面一定得加東西 ,
不論是 加_root 或是 this

今天它語法跟物件同層 this也可改成_root

  • 留言者: icq11932006
  • Email:
  • 網址:
  • 日期: 2010-06-23 05:33:08
那麼,function名字也可以用迴圈嗎

//自訂myFn是變數,此方法好像不可行 >_<

for(i=1;i<=10;i++){

var myFn:String;

myFn= test+i;

this[ "bt" + i ].onPress=function myFn(){}

}