路徑,包與#include小結:
最近做了乙個比較大的東東,積累了些比較有用的as2技巧,拿出點有用的和大家分享先:
有些與腳下本字典有重複了~~~~這裡只介紹一些在用的時候需要注意的地方,不涉及oop程式設計方面的內容。
1#include
1.1#inlcude 是用來匯入外部指令碼的語句,這樣的話,
你就可以在flas內部加上一句#include "script.as",剩下的事就讓體積要小巧多的文字編輯器(如ultraedit)來完成了。
對於coder們而言,這是比較體面的一種編寫**的方式。
注意,這種方式不可以匯入類,適用於寫宣告類例項之類的**。
如這樣:
var p:test=new test();
p.main();
剩下的事就交給你的類吧,可以完全「類裡來類裡去了」~~~~
1.2可以在乙個#include 裡巢狀加#include ,從而匯入另乙個指令碼檔案.
1.3可以使用乙個資料夾來放腳下本檔案。
假定你的檔案結構是這樣安排的:
test+---//這個表示資料夾
flaswf
script+---
as.as
用#include "script/as.as" 或 #include "script/as.as"皆可匯入指令碼檔案.
2包和路徑.
其實,等到你寫包的時候,你才真正關注起路徑方面的事項。
2.1包在flash中就是以簡單的資料夾的形式形式存在的.
匯入某個包中的某個類用:
import mypackage.subpackage.myclass;
匯入某個包中的全體類用:
import mypackage.subpackage.*;
2.2對於寫在包中類的宣告,要把包的路徑給加上去。
class mypackage.subpackage.myclass
inte***ce mypackage.subpackage.myinte***ce
2.3使用:
2.3.1
比方說,你現在的檔案存放結構是這樣的:
test+---//這個表示資料夾
flaswf
mypackage+---
subpackage1+---
myclass1.as
subpackage2+---
myclass2.as
如果在class1中有用到class2的類物件
那就應該這樣宣告:
import mypackage.subpackage2.myclass2;
class mypackage.subpackage2.myclass1
最終測試時,別忘了在flash指令碼的路徑選項中應有一項 .
注意,是我們看似不起眼的乙個".",它表示的是當前fla所在路徑.
當然,你也可以選擇不用import而匯入相對路徑.
class mypackage.subpackage2.myclass1
不過,大多數人應該會認為這樣做的話比較麻煩的~~~~
2.3.2
import中起點路徑的定義:
import語句中的起點路徑如何計算呢?
關鍵是看你在「首選項」中設定的指令碼搜尋的起點位置,
通常是有兩項:
. //指向當前路徑
$(localdata)/classes //指向flash的類庫,如果你的flash是裝在c盤的program files裡的話,
那麼這個類庫應該可以通過:
"c:/program files/macromedia/flash mx 2004/zh_**/first run/classes/"
檢視到.
當然,你也可以比較有「個性」的把子路徑或者是父級路徑設為起點路徑:
../ //父級路徑
./subarchive/ //子級路徑
不過我不太推薦這樣用.
所以,用import匯入的類的起點位置都要以你在「首選項」中設定的腳下本起始路徑為基準,
比方說:
test+---//這個表示資料夾
flaswf
mypackage+---
mysuperclass.as
subpackage1+---
myclass1.as
subpackage2+---
myclass2.as
首選項中這樣設定:
. $(localdata)/classes
那麼mysuperclass.as若要用到myclass1.as的(通常指建立類的成員物件或繼承)話,則要寫:
import mypackage.subpackage1.myclass1;
myclass2.as用到myclass1.as的情況前面已有://一樣的.
import mypackage.subpackage1.myclass1;
2.4事情變得複雜時,也許你會覺得有些麻煩了,其實不然,
只要遵循乙個原則,當前的類/**段裡有用到哪個類,就把那個類用import給匯入.
舉例如下:
2.4.1
主場景中用乙個簡單工廠模式來切換場景當前場景的管理類,**如下:
var scenemanager:scenemag=new scenemag();
var effectmanager:iseffect=new effect1();//iseffect是乙個介面類
scenemanager.init();
effectmanager.init();
其中,scenemanager還有各個effect的自身有含有很多別的子類,那麼,是否要把它們一口氣全宣告進來呢?
根據前面講的原則,很顯然,這裡只要匯入你當前用的類即可,如下:
import sdgp.**ag.scenemag;//場景管理類
import sdgp.seffect.*;//效果類,有許多,全部匯入.
之後的工作是交給scenemag類及相應的effect類去匯入它們所要用到的類物件即可:
比方說scencemag的宣告部分我是這樣做的:
import sdgp.**ag.csobject;//擴充套件object的乙個類,用於存放一些自定義的全域性屬性,用以解決沒有列舉型別的問題
import sdgp.**ag.rc**ag;//繼承其抽象父類
import sdgp.s***.cs***physce;//匯入***po***元件包中所定義的主場景的部分
import sdgp.seffect.*;//匯入seffect包中的所有類,因為這裡是用簡單工廠模式在建立effect物件
class sdgp.**ag.scenemag extends rc**ag
附:簡單工廠模式實現部分的**:
public function changeitem(num:number):iseffect//通過介面型別, 實現多型的建立物件.
}
web後台 2 路徑問題
參看訪問路徑 在web inf內的檔案用相對路徑,使用絕對路徑也訪問不了,因為web inf是私有的 參看部落格 其中 不是代表專案名稱,是代表專案存放的路徑。你的專案放在什麼目錄下,他就代表什麼目錄。basepath web專案名稱等的完整請求路徑。request.getcontextpath 拿...
113 路徑之和2 遞迴
給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 5 1返回 5,4,11,2 5,8,4,5 definition for a binary t...
P1176 路徑計數2
題目描述 乙個n n的網格,你一開始在 1,1 即左上角。每次只能移動到下方相鄰的格仔或者右方相鄰的格仔,問到達 n,n 即右下角有多少種方法。但是這個問題太簡單了,所以現在有m個格仔上有障礙,即不能走到這m個格仔上。輸入輸出格式 輸入格式 輸入檔案第1行包含兩個非負整數n,m,表示了網格的邊長與障...