ngui
Class: GUIApplication
快捷方式 --> GUIApplication
Class: ViewController
快捷方式 --> ViewController
渲染下一幀畫面后執(zhí)行,快捷方式 --> nextFrame(cb)
通過vx
描述數(shù)據(jù)創(chuàng)建視圖或視圖控制器,快捷方式 --> New()
定義樣式表,快捷方式 --> CSS()
測試參數(shù)vx
是否為視圖描述數(shù)據(jù)并且為type
類型
如果不傳入type
不檢測類型
獲取當前GUIApplication
實例
獲取當前Root
實例
Root
}
獲取當前根ViewController
實例
獲取當前DisplayPort
實例
屏幕原子像素尺寸,快捷方式 --> atomPixel
float
}Class: View
extends
Notification
gui
核心部件,用它來描述屏幕上所有可見的元素,它是所有視圖的基礎(chǔ)類型
它也是事件的響應者,這些事件由硬件以及操作系統(tǒng)觸發(fā)
包括Touch
Mouse
Keyboard
等
構(gòu)造函數(shù)調(diào)用前必需先創(chuàng)建GUIApplication
否則拋出異常
Example:
import { View, Div, ngui } from 'ngui'
var v = new View();
v.x = 100;
v.y = 100;
ngui.root.append(v);
// jsx語法只能存在于.jsx文件中
var v2 = ngui.New(<Div width=100 height=100 backgroundColor="#f00" />, v);
v2.onClick.on(function(ev) {
console.log('div click');
})
查詢內(nèi)部的第一個Button
Button
}
測試view
視圖是否為當前視圖的后代視圖
前置子視圖
child
{View
}追加子視圖
child
{View
}追擊文本字符串到結(jié)尾,不同的視圖追加到結(jié)尾的最終結(jié)果不同
如: View
會追加成Label
, Div
會追加成Text
, 而Hybrid
則會追加成TextNode
但追加到結(jié)尾的都為葉子視圖
追加到父視圖結(jié)尾
parent
{View
}插入到前面
prev
{View
}插入到后面
next
{View
}移動到上一個兄弟視圖前面
移動到下一個兄弟視圖后面
移動到第一個
移動到最后一個
從父視圖刪除
刪除所有子視圖
獲取焦點成功返回true
bool
}
辭去焦點成功返回true
bool
}
獲取當前視圖與父視圖之間的偏移量,不包括x
與y
值
只有Layout
才有此值其它非布局視圖都為vec2(0,0)
Vec2
}
獲取當前視圖與upper
視圖之間的布局偏移量,不包括x
與y
值,upper
必需為父級視圖
如果不傳入upper
默認為parent
通過索引獲取子視圖
獲取當前視圖動作
Action
}設(shè)置動作
action
{Action
}
獲取動作,與getAction()
功能相同
Action
}
設(shè)置動作,可選的值為Action
或可用于創(chuàng)建Action
的json
描述Object
原型為: view.setAction(action.create(json)
)
創(chuàng)建過度動畫動作并立即開始播放并返回KeyframeAction
原型為: action.transition(view,style,delay,cb)
播放結(jié)束回調(diào)
Callback: cb()
style
{Object
}[delay]
{uint
} ms
[cb]
{Function
}KeyframeAction
}
顯示視圖,默認為設(shè)置view.visible = true
當然你可以重寫該方法
隱藏視圖 默認為設(shè)置view.visible = false
獲取視圖實際在屏幕中最小左上角與最大右下角所形成的矩形,注意Trap in Layout
Rect
}
基礎(chǔ)矩陣與父視圖最終矩陣的乘積,注意Trap in Layout
Mat
}當前視圖的不透明度與父視圖的最終不透明度的乘積
float
}
獲取視圖最終在屏幕上的位置,注意Trap in Layout
實際上這個方法返回的是view.finalMatrix()
最終矩陣中的translate
位移分量
Vec2
}Layout
視圖而言,如果當前視圖或相關(guān)視圖有更改過與布局相關(guān)的屬性,這時如果立即獲取與屏幕位置相關(guān)的屬性值或方法調(diào)用結(jié)果可能會不準確,
因為布局視圖始終都在渲染前才進行更新,這時應該使用到nextFrame(cb)
這個函數(shù),
nextFrame(cb)
總是在渲染完幀后執(zhí)行
給定一個屏幕中上的座標點測試是否被視圖包圍
添加class
樣式選擇器
name
{String
}
刪除class
樣式選擇器
name
{String
}
切換class
樣式選擇器
name
{String
}返回子視圖數(shù)量
uint
}獲取與設(shè)置視圖內(nèi)部的文本
設(shè)置時不同的視圖結(jié)果會有所不同,與appendText(text)
類似
String
}
獲取或設(shè)置id
,這個id
在同一個視圖控制器作作用域中不可以重復
可以通過topCtr.find(id)
獲取這個視圖
String
}
如果這個視圖擁有ViewController
可通過ctr
或controller
獲取它,
這個視圖稱之為關(guān)鍵視圖,ViewController
稱之為成員視圖控制器,
關(guān)鍵視圖下面所有后代視圖以及子視圖控制器都屬于這個作用域中的成員,
成員視圖的top
屬性都指向當前關(guān)鍵視圖,成員視圖的topCtr
以及子視圖控制器的parent
都指向成員視圖控制器屬性,
如果這些成員有具名的id
,可以通過成員視圖控制器ViewController.find(id)
找到這些成員
指向關(guān)鍵視圖
View
}指向成員視圖控制器
返回父視圖,Root
沒有父視圖
View
}上一個兄弟視圖
View
}下一個兄弟視圖
View
}第一個子視圖
View
}最后一個子視圖
View
}
矩陣變換中的位移translate.x
float
}
矩陣變換中的位移translate.y
float
}
矩陣變換縮放x
float
}
矩陣變換縮放y
float
}
矩陣變換旋轉(zhuǎn)z
float
}
矩陣變換斜歪x
float
}
矩陣變換斜歪y
float
}不透明度
float
}
顯示與隱藏true
為顯示false
隱藏,Layout
不占用位置
bool
}最終是否顯示或隱藏,受父視圖影響
bool
}矩陣變換位移
Vec2
}矩陣變換縮放
Vec2
}矩陣變換斜歪
Vec2
}
矩陣變換的原點x
,默認為0
float
}
矩陣變換的原點x
,默認為0
float
}
矩陣變換的原點,默認為vec2(0,0)
Vec2
}
基礎(chǔ)矩陣,通過計算從父視圖矩陣開始的位移,縮放,旋轉(zhuǎn),歪斜得到的矩陣。注意Trap in Layout
Mat
}
在gui
視圖樹中的等級level
, Root
視圖為1
, 如果為0
表示這個視圖還沒有父視圖
uint
}強制必需渲染該視圖
needDraw=false
如果這個值為false
在渲染優(yōu)化中會忽略沒有在屏幕范圍內(nèi)的視圖元素,
以及這個視圖下的所有后代視圖不管這些后代視圖是否在屏幕范圍內(nèi)部,
當這個值為true
時會強制繪制這個視圖不管是否在屏幕范圍內(nèi)外。
View
默認為true
,那些可見的視圖默認都為false
如:Div
/Sprite
/Hybrid
bool
}
是否響應接收事件,默認為false
不接收,事件會穿透到最底層直到有視圖接收并處理該事件,
但當有事件監(jiān)聽時會自動設(shè)置為true
,當然你可以手動關(guān)閉它。
bool
}
是否為焦點狀態(tài),焦點狀態(tài)可以響應鍵盤事件,以及非觸屏與非鼠標事件,當然你要確保receive
為打開狀態(tài)
bool
}
返回視圖類型的id
不同的視圖都有唯一的值
uint
}實際上設(shè)置與返回都為自己,這個屬性只為便捷性而存在
Object
}
返回class
樣式表選擇器對像
Object
}
設(shè)置class
樣式表選擇器
String
}Example:
// Prints:
// {
// name: "a b"
// }
view.class = 'a b'
console.log(view.class);
Class: Sprite
extends
View
圖像精靈類型,非Layout
視圖, 任何變化都不會激活局部布局或連鎖布局反應,
通過此它可以選取圖像任意位置大小顯示到屏幕,
在需要更高性能的地方可考慮使用它代替Image
視圖
圖像路徑,reader
中支持的路徑協(xié)議都可以
或者使用$(path)
函數(shù)讀取包內(nèi)路徑文件
String
}
Default0
DisplayPort
設(shè)置的尺寸與屏幕的縮放ratio
影響,ratio
越小實際選取的圖像范圍越大float
}
浮點類型的高度 Default0
float
}ratio
的影響100*100
像素的圖像,start
設(shè)置為vec2(25,25)
如果ratio=vec2(0.5,0.5)
那么實際選取的位置為圖像的vec2(50,50)
的位置與ratio
成反比
實際上現(xiàn)在可以將這張圖像看做為50*50
比實際縮小了0.5
倍
Defaultvec2(0,0)
Vec2
}
選取圖像有開始位置x
Default0
float
}
選取圖像有開始位置y
Default0
float
}圖像本身的縮放比例尺,這個值越小顯示的圖像范圍越大,實際反應在屏幕上圖像比例會變得更小
Defaultvec2(1,1)
Vec2
}
圖像比例尺x
float
}
圖像比例尺y
float
}
圖像是否重復,默認為不重復none
, 可選的值參見Repeat
運行在OpenGLES 2.0
模式時這里設(shè)置為重復時,可能會出現(xiàn)圖像不顯示的情況,
因為gles2.0
建議使用非2^n尺寸圖像,這有利于性能優(yōu)化,現(xiàn)在還有很多低端Android
設(shè)備運行gles2.0
,
所以需要盡量注意在這些設(shè)備上使用非2^n尺寸圖像
Repeat
}Class: Label
標簽文本視圖對像,具備簡單的文本布局,任何變化都不會激活聯(lián)鎖布局計算,在要爾更高性能的地方可考慮使用
獲取標簽視圖文本內(nèi)容長度
uint
}獲取與設(shè)置廣本值
String
}文本基線距離文本頂部的距離,不同字體與不同尺寸字號會不相同
String
}文本頂部與底部的距離
float
}
標簽文本的對齊與排列方式 Default left
支持以下方式:
left
- 從左到右
排列并且以左邊
對齊right
- 從左到右
排列并且以右邊
對齊center
- 從左到右
排列并且以居中
對齊leftReverse
- 從右到左
排列并且以左邊
對齊rightReverse
- 從右到左
排列并且以右邊
對齊centerReverse
- 從右到左
排列并且以居中
對齊Class: Layout
abstract class
extends
View
所以它相對于沒有自動布局運算的視圖性能要低,你可以合理使用這些類型來達到更好的性能,
full
與auto
之類模糊值,模糊的值有時需要進行多次迭代布局運算才能得出結(jié)果,甚至你可以將布局視圖與非布局視圖相互嵌套使用來阻斷連鎖布局。
布局的clientWidth寬度,在Box
中這個值包含finalMargin
float
}
布局的clientHeight高度,在Box
中這個值包含finalMargin
float
}Class: Span
extends
Layout
,TextLayout
TextNode
并設(shè)置其文本樣式,因為TextLayout
屬性具有繼承性質(zhì)Class: TextNode
extends
Span
文本字符串的長度
uint
}獲取與設(shè)置文本字符串
String
}文本基線距離文本頂部的距離,不同字體與不同尺寸字號會不相同
float
}文本頂部與底部的距離
float
}Class: Box
abstract class
extends
Layout
盒子模型,布局的核心部件,這是個抽象類型并沒有構(gòu)造函數(shù)
盒子的寬度,應盡量使用明確值來降低布局運算 Defaultauto
盒子的尺寸在布局運算結(jié)果中分為明確
值與模糊
值
可選的值:
auto
- 自動模糊
值受內(nèi)部擠壓影響,擠壓也會影響到父視圖與兄弟視圖導致連鎖反應會使它們的重新布局full
- 設(shè)置為這個類型的值時不管父視圖是否有明確
值都會填滿父視圖width
當然這里是使用clientWidth
填滿,所以這里還需要margin
與border
參與運算。
使用這個類型的值時,如果父視圖沒有明確
寬度值,會導致最長最復雜的迭代運算。
pixel
- 明確
的像素數(shù)值并非真正就義上的像素,使用浮點數(shù)表示但在這里不能為負,
1
代表屏幕的多少像素需要參照DisplayPort
中設(shè)置的尺寸與屏幕的縮放
percent
- 百分比值使用10%
形式表示,取父視圖width
的百分比值,需要父視圖有明確
的width
,
否則百分比值不會生效,為模糊
值與auto
無異
minus
- 減小值用10!
形式表示,使用父視圖的最終width
減去這個值得到的值,
與百分比一樣需要父視圖有明確
的width
值,否則減小值不會生效,為模糊
值與auto
無異
Value
}
盒子的高度,可選值參考height
Defaultauto
Value
}
左邊的外邊距 Default0
可選的值:
auto
- 當父視圖width
與當前width
都為明確值時才會生效,結(jié)果會等于父視圖最終width
減去當前width
,
如果marginRight
同時為auto
這個值減半,相當于整個視圖在父視圖中居中
full
- 與設(shè)置auto
結(jié)果相同pixel
- 明確的數(shù)值,但不能為負數(shù)percent
- 使用父視圖的百分比,父視圖需要有明確寬度,否則無效minus
- 使用父視圖的最終width
減去這個值得到的值,父視圖需要有明確寬度,否則無效Value
}
頂部的外邊距 可選值參考marginLeft
Default0
Value
}
右邊的外邊距 可選值參考marginLeft
Default0
Value
}
底部的外邊距 可選值參考marginLeft
Default0
Value
}
左邊框 Default0 #000000ff
Border
}
上邊框 Default0 #000000ff
Border
}
右邊框 Default0 #000000ff
Border
}
下邊框 Default0 #000000ff
Border
}
左邊框?qū)挾?Default0
float
}
上邊框?qū)挾?Default0
float
}
右邊框?qū)挾?Default0
float
}
下邊框?qū)挾?Default0
float
}
左邊框顏色 Default#000000ff
Color
}
上邊框顏色 Default#000000ff
Color
}
右邊框顏色 Default#000000ff
Color
}
下邊框顏色 Default0
Color
}
左上圓角尺寸 Default0
float
}
右上圓角尺寸 Default0
float
}
右下圓角尺寸 Default0
float
}
左下圓角尺寸 Default0
float
}
背景顏色 Default #0000
不透明度為0
的黑色
Color
}
是否在新行開始布局 Default false
bool
}獲取最終寬度
float
}獲取最高度
float
}獲取最終布局后的左外邊距寬度
float
}獲取最終布局后的上外邊距寬度
float
}獲取最終布局后的右外邊距寬度
float
}獲取最終布局后的下外邊距寬度
float
}同時設(shè)置全部外邊距
Value
}同時設(shè)置全部邊框
Border
}同時設(shè)置全部的邊框?qū)挾戎?/p>
float
}同時設(shè)置全部的邊框顏色值
Color
}同時設(shè)置全部的邊圓角值
float
}Class: Div
extends
Box
盒子模型的一種實現(xiàn),定義內(nèi)部Box
的對齊與排列方式,
并且會忽略非Box
內(nèi)容的布局,不對其進行布局計算
內(nèi)容的對齊與排列方式 Default left
left
- 水平布局,從左到右排列布局,溢出往下?lián)Q行right
- 水平布局,從右到左排列布局,溢出往下?lián)Q行top
- 垂直布局,從上到下排列布局,溢出往右邊換行bottom
- 垂直布局,從下到上排列布局,溢出往右換行Class: Hybrid
extends
Box
,TextLayout
盒子模型的一種實現(xiàn),定義內(nèi)部Layout
的對齊與排列方式,
并且會忽略非Layout
內(nèi)容的布局,不對其進行布局計算
內(nèi)容以及文本的對齊與排列方式 Default left
混合視圖只能使用水平布局:
left
- 內(nèi)容從左到右
排列并且以左邊
對齊right
- 內(nèi)容從左到右
排列并且以右邊
對齊center
- 內(nèi)容從左到右
排列并且以居中
對齊leftReverse
- 內(nèi)容從右到左
排列并且以左邊
對齊rightReverse
- 內(nèi)容從右到左
排列并且以右邊
對齊centerReverse
- 內(nèi)容從右到左
排列并且以居中
對齊Class: Limit
extends
Div
限制盒子,限制盒子的最小尺寸與最大尺寸
實際為width
屬性的別名,但在這里做為限制最小寬度使用
最小寬度不會超過maxWidth
最大寬度的限制,如果超過取maxWidth
值
Default auto
Value
}
實際為height
屬性的別名,但在這里做為限制最小高度使用
最小高度不會超過maxHeight
最大高度的限制,如果超過取maxHeight
值
Default auto
Value
}
限制最大寬度 Default auto
Value
}
限制最大高度 Default auto
Value
}Class: Indep
extends
Div
獨立的盒子視圖,它的偏移位置不受布局方式的影響,布局方式以自身的對齊方式為準
水平對齊方式,默認為left
,有效的值為:
left
- 水平左對齊cerent
- 水平居中對齊right
- 水平右對齊Align
}
垂直對齊方式,默認為top
,有效的值為:
top
- 垂直頂部對齊cerent
- 垂直居中對齊bottom
- 垂直底部對齊Align
}Class: LimitIndep
extends
Indep
獨立的限制盒子視圖,顧名思義兼具獨立盒子與限制盒子的特性
實為width
別名,但這里做為限制最小寬度使用 --> Limit.minWidth
Value
}
實為height
別名,但這里做為限制最小高度使用 --> Limit.minHeight
Value
}
限制最大寬度 --> Limit.maxWidth
Value
}
限制最大高度 --> Limit.maxHeight
Value
}Class: Image
extends
Div
auto
時會使用源圖像的像素尺寸并不會受內(nèi)部擠壓,這與Div
不同width
為明確數(shù)值height=auto
時高度會按圖像比例進行縮放,
反過來height
為明確數(shù)值時亦然相同,如果同時為auto
使用源圖像的尺寸
源圖像路徑,reader
中支持的路徑協(xié)議都可以
或者使用$(path)
函數(shù)讀取包內(nèi)路徑文件
String
}
背景圖像,這個屬性是為了在src
圖像還在載入中時這個可以做為臨時圖像源使用
String
}源圖像的像素寬度
uint
}源圖像的像素高度
uint
}Class: SelectPanel
extends
Div
按鈕面板視圖,它對Button
有特別的作用,專門針對tv
設(shè)備遙控器操作而設(shè)計
以下所說的切換都為按下遙控器或鍵盤時
內(nèi)部Button
焦點切換時觸發(fā)
是否允許內(nèi)部Button
按鈕將焦點切換到外部
bool
}
是否允許外部Button
按鈕將焦點切換到內(nèi)部
bool
}
切換的時間限制,離上一次切換時間不到intervalTime
不允許切換
uint
} ms
是否允許內(nèi)部Button
切換焦點
bool
}
是否激活狀態(tài),當內(nèi)部Button
擁有焦點時為激活狀態(tài)
bool
}
父SelectPanel
視圖
Class: Button
extends
Hybrid
按鈕視圖,這個視圖默認綁定click
后使用高亮樣式
是否使用高亮樣式默認,Default true
bool
}設(shè)置高亮
status
{HighlightedStatus
}
查找指定方向相鄰的按鈕,按鈕必需在SelectPanel
才能查找,找不到返回null
direction
{Direction
} {[
Button]}
Class: Root
extends
SelectPanel
Class: BasicScroll
abstract class
滾動面板的基礎(chǔ)類型,這是個抽象類型并沒有構(gòu)造函數(shù)
滾動到指定位置,并可指定滾動動畫的時間與曲線
scroll
{Vec2
}[duration]
{uint
} ms
, 過渡時間,不傳入?yún)?shù)使用defaultScrollDuration
值[curve]
{Curve
} 過渡的曲線,不傳入?yún)?shù)使用defaultScrollCurve
值中止當前過渡或慣性運動
滾動到指定位置
Vec2
}
滾動到指定x
位置
float
}
滾動到指定y
位置
float
}可滾動內(nèi)容寬度
float
}可滾動內(nèi)容高度
float
}是否顯示滾動條
bool
}
慣性滾動阻力,最小0.5
float
} 0.5-...
是否使用反彈 Default true
bool
}
是否鎖定反彈 Default true
當內(nèi)容尺寸小于當前Scroll
尺寸時是否可以拖拽并反彈,true
表示不能被拖拽
bool
}拖拽是否引發(fā)慣性運動
bool
}是否鎖定方向,只能往一個軸向滾動
bool
}
Default 1
x
,scrollX
最終總是會停止在捕獲值的倍數(shù)位置,1
表示捕獲當前Scroll
視圖的finalWidth
float
}
Default 1
y
,小于1
表示捕獲當前Scroll
視圖的finalHeight
float
}滾動條的顏色
Color
}
當前是否顯示hScrollbar
bool
}
當前是否顯示vScrollbar
bool
}滾動條的寬度
float
}滾動條的邊距
float
}
調(diào)用scrollTo
或設(shè)置scroll
時的默認滾動過渡時間,Default 0
uint
} ms
默認滾動曲線 Default easeOut
Curve
}Class: Scroll
extends
SelectPanel
,BasicScroll
滾動條的實現(xiàn)
滾動時觸發(fā)
內(nèi)部按鈕切換時滾動的左邊距
float
}內(nèi)部按鈕切換時滾動的右邊距
float
}內(nèi)部按鈕切換時滾動的上邊距
float
}內(nèi)部按鈕切換時滾動的下邊距
float
}
內(nèi)部按鈕切換時x
軸滾動對齊方式
Align
}
內(nèi)部按鈕切換時y
軸滾動對齊方式
Align
}
內(nèi)部按鈕切換時是否滾動可見位置 Default true
bool
}
設(shè)置并啟用固定滾動大小,當設(shè)置值為vec2(0,0)
時禁用固定滾動尺寸,使用實際內(nèi)容的滾動尺寸
Vec2
}Class: Text
extends
Hybrid
文本葉子視圖
文本字符串長度
uint
}獲取或設(shè)置文本字符串
uint
}文本基線距離文本頂部的距離,不同字體與不同尺寸字號會不相同
float
}文本頂部與底部的距離
float
}Class: Input
extends
Text
單行文本輸入框
文本鍵盤類型:
normal
- ascii
- number
- url
- numberPad
-phonePad
-namePhonePad
-email
-decimalPad
-twitter
-webSearch
-asciiNumnerPad
-文本框鍵盤返回類型:
normal
- go
- join
- next
- route
- search
- send
- done
- emergencyCall
- continue
- 當文本框值為空時,顯示的占位字符串
String
}占位字符顏色
Color
}是否將文本顯示為安全模式
bool
}文本內(nèi)容顯示的左右邊距
float
}Class: Textarea
extends
Input
,BasicScroll
多行文本輸入框
Class: Clip
extends
Div
裁剪視圖,可以將溢出盒子外部的內(nèi)容裁剪掉
Class: TextFont
abstract class
普通文本與字體屬性,這是個抽象類型并沒有構(gòu)造函數(shù)
文本背景顏色 Default inherit
文本顏色 Default inherit
文本字號大小 Default inherit
TextSize
}
文本樣式 Default inherit
inherit
- 繼承light
- 細體regular
- 正常bold
- 粗體...
文本字體家族名稱列表字符串,多個使用逗號分割 Default inherit
文本陰影 Default inherit
文本行高 Default inherit
可選的值為
inherit
- 繼承auto
- 使用字體文件中的默認值xxx
- 具體數(shù)值
文本裝飾 Default inherit
inherit
- 繼承父視圖none
- 無裝飾overline
- 上劃線lineThrough
- 中劃線underline
- 下劃線Class: TextLayout
abstract class
extends
TextFont
布局文本字體屬性,這是個抽象類型并沒有構(gòu)造函數(shù)
文本溢出動作 Default inherit
inherit
- 繼承父視圖normal
- 不做處理clip
- 修剪ellipsis
- 修剪并在文本末尾顯示省略號centerEllipsis
- 修剪并在文本中間顯示省略號
文本空格處理方式 Default inherit
inherit
- 繼承父視圖normal
- 保留所有空白,使用自動wrapnoWrap
- 合并空白序列,不使用自動wrapnoSpace
- 合并空白序列,使用自動wrappre
- 保留所有空白,不使用自動wrappreLine
- 合并空白符序列,但保留換行符,使用自動wrap
更多建議: