一級類圖
- Config3D
- Config 全局參數(shù)悯辙。如需更改劣领,請在初始化引擎之前設置
- UIConfig
- Laya3D
- Laya
-
EventDispatcher 可調度事件基類
- Resource
- SoundChannel
- Sound
- HttpRequest
- Loader
- LoaderManager
- AnimationTransform3D
- Transform3D
- BaseRender
- Texture
-
Node
- UIComponent
- AnimationPlayer
- Accelerator
- Shake
- Gyroscope
- Socket
- Physics
- TimeLine
-
Component 組件基類
- ConstraintComponent
- CannonPhysicsComponent
- PhysicsComponent
- Script3D
- Animator
- CommonScript
- Script
- EffectBase
- RigidBody
- JointBase
- ColliderBase
- Widget
- Browser
1. 顯示相關
1.1 節(jié)點 Node
Node節(jié)點類:
- 是可以放在顯示列表中的所有對象的基類
- 顯示列表管理Laya運行時顯示的所有對象
- 可以排列顯示列表中的顯示對象
- 對象可以有子顯示對象
常用Node操作:
-
- 節(jié)點操作
- 增
- addChild
- 刪
- destroy
- 查
- getChildAt
- getComponent
- 改
- replaceChild
-
- 生命周期
- onAwake() 組件被激活后執(zhí)行穿香,此時所有節(jié)點和組件均已創(chuàng)建完畢国觉,此方法只會執(zhí)行一次嚼松。
- onDestroy() 組件被銷毀時執(zhí)行
- onDisable() 組件被禁用時執(zhí)行猾普,比如節(jié)點從舞臺移除后袜炕。
- onEnable() 組件被啟用后執(zhí)行,比如節(jié)點被添加到舞臺后初家。
-
- 事件分發(fā)
- on
-
- 定時器
- clearTimer
- timerOnce
繼承概覽圖:
- Laya.Display.Node
-
Sprite 是基本的顯示圖形的顯示列表節(jié)點
- Text 顯示文本
- Input 輸入文本
-
Scene 場景類
- View 視圖類偎窘,相對布局
- Dialog對話框
- View 視圖類偎窘,相對布局
- Scene3D 3D場景類
- AnimationBase 動畫基類
- FrameAnimation 節(jié)點關鍵幀動畫播放類
- EffectAnimation 動效模板
- Animation 是Graphics動畫類
- FrameAnimation 節(jié)點關鍵幀動畫播放類
- Stage 舞臺類 通過 Laya.stage 單例訪問
- Skeleton 骨骼動畫
- MovieClip 播放swf動畫
- Video Video將視頻顯示到Canvas上
- HTMLDivElement HTML圖文類
- TileAniSprite TildMap的動畫顯示對象
- MapLayer 層級類
- GridSprite
- Particle2D 粒子播放類
- PhysicsDebugDraw 物理輔助線
- UIComponent ui控件類的基類
- Image
- Box 控件容器類
- List
- UIGroup
- ViewStack
- ScaleBox
- Panel
- Tree
- LayoutBox
- Button
- Clip
- ColorPicker
- Label
- Slider
- ScrollBar
- ComboBox
- ProgressBar
- TipManager
- WXOpenDataViewer
- DialogManager 對話框管理容器,所有的對話框都在該容器內(nèi)
- Text 顯示文本
- Sprite3D
- ReflectionProbe
- RenderableSprite3D 可渲染3D精靈的父類
- MeshSprite3D 網(wǎng)格
- SkinnedMeshSprite3D
- PixelLineSprite3D 像素線渲染精靈
- ShuriKenParticle3D 3D粒子
- TrailSprite3D
- SimpleSkinnedMeshSprite3D
- LightSprite 燈光
- PointLight 點光
- SpotLight 聚光
- DirectionLight 平行光
- BaseCamera
- Camera攝像機
-
Sprite 是基本的顯示圖形的顯示列表節(jié)點
1.2 場景
舞臺 Stage
舞臺類溜在,顯示列表的根節(jié)點陌知,所有顯示對象都在舞臺上顯示
功能:
- 展示相關,長寬
- 外設相關 鼠標相關
場景 Scene
負責場景創(chuàng)建掖肋,加載仆葡,銷毀等功能 場景被從節(jié)點移除。
作用:
- load() 加載場景及場景使用到的資源
- open() 加載并打開場景
- close() 根據(jù)地址志笼,關閉場景(包括對話框)
- closeAll() 關閉所有場景沿盅,不包括對話框,如果關閉對話框纫溃,請使用Dialog.closeAll()腰涧。
- destroy() 根據(jù)地址,銷毀場景(包括對話框)
- gc() 銷毀當前沒有被使用的資源,該函數(shù)會忽略lock=true的資源紊浩。
- setLoadingPage() 設置loading界面窖铡,引擎會在調用open方法后,延遲打開loading界面坊谁,在頁面添加到舞臺之后费彼,關閉loading界面。
- showLoadingPage() 顯示loading界面
- hideLoadingPage() 隱藏loading界面
子類:
- View
- 視圖類 增加相對布局功能
- Dialog
- 彈出對話框
- Handler 事件處理器類呜袁〉新颍可以處理close事件
生命周期:
- onOpened 場景打開完成后,調用此方法
- onClosed 關閉完成后阶界,調用此方法
1.3 元素
精靈 Sprite
游戲中Sprite精靈是在屏幕中能夠被控制的顯示對象虹钮,如果屏幕中的顯示對象不能被控制那就只是一個節(jié)點聋庵。準確來說,Sprite精靈是一個能夠通過改變自身屬性芙粱,比如角度祭玉、位置、伸縮春畔、顏色等脱货,變?yōu)榭煽貏赢嫷?D圖像
作用:
- 展示寬高 getBounds
- 獲取寬高,也可以設置
- 鼠標事件 mouseEnabled
- 默認不接受鼠標事件律姨,即mouseEnabled=false
- 可做容器
- 常用的視圖操作(大小 位置 縮放 紋理圖片 拖拽)
1.4 視圖組件
UIComponent
所有視圖組件直接或間接地繼承自Component類振峻,Component類是UI組件的基類。每個組件都擁有屬于自己的屬性择份、方法和事件扣孟。使用組件可以使程序設計與界面設計分離,以提高代碼的可復用性荣赶。
分類:基礎組件凤价、容器組件、視圖組件
繼承關系:
-
UIComponent
-
Image
- AdvImage 廣告插件
-
Box
- List 控件可顯示項目列表拔创。默認為垂直方向列表利诺。
-
UIGroup 以自動布局的項集合控件
- RadioGroup 控件定義一組 Radio 控件,這些控件相互排斥剩燥; 因此慢逾,用戶每次只能選擇一個 Radio 控件。
- Tab 組件用來定義選項卡按鈕組灭红。
- ViewStack 視圖堆棧類
- ScaleBox 自適應縮放容器吱型,容器設置大小后拓哺,容器大小始終保持stage大小
- Panel 面板容器類
- Tree 使用戶可以查看排列為可擴展樹的層次結構數(shù)據(jù)
-
LayoutBox 布局容器類
- HBox 水平布局容器類
- VBox
-
Button
- CheckBox 組件顯示一個小方框校读,該方框內(nèi)可以有選中標記
- Radio 控件使用戶可在一組互相排斥的選擇中做出一種選擇
-
Clip 位圖切片動畫
- FontClip 字體切片账月,簡化版的位圖字體
- ColorPicker 組件將顯示包含多個顏色樣本的列表,用戶可以從中選擇顏色赁项。
-
Label 顯示文本
- TextInput 顯示和輸入文本
-
Slider 用戶可以通過在滑塊軌道的終點之間移動滑塊來選擇值
- HSlider 水平方向
- VSlider 垂直
-
ScrollBar 滾動條組件
- VScrollBar
- HScrollBar
- ComboBox 下拉列表葛躏,用戶可以從該列表中選擇單個值
- ProgressBar 加載進度
- TipManager 鼠標提示管理類
- WXOpenDataViewer 微信開放數(shù)據(jù)展示組件,直接實例本組件
-
Image
2. 腳本組件
核心類概覽:
- Component
- ConstraintComponent 約束組件的父類
- FixedConstraint
- ConfigurableConstraint
- CannonPhysicsComponent 創(chuàng)建物理組件的父類
- PhysicsTriggerComponent 物理觸發(fā)器組件
- PhysicsComponent
- CharacterController 角色控制器
- PhysicsTriggerComponent 物理觸發(fā)器組件
- Rigidbody3D 剛體碰撞器
- PhysicsCollider 靜態(tài)物理碰撞器
- Script3D 3D腳本的父類,該類為抽象類,不允許實例
- Animator 動畫組件
- CommonScript 公共腳本類
- Script 組件的生命周期, 抽象類悠菜,不允許實例
- EffectBase 插件基類舰攒,基于對象池管理
- FadeIn 淡入效果
- FadeOut
- RigidBody 2D剛體
- JointBase 關節(jié)基類
- DistanceJoint 距離關節(jié)
- GearJoint 齒輪關節(jié)
- MotorJoint 馬達關節(jié):用來限制兩個剛體,使其相對位置和角度保持不變
- MouseJoint
- PrismaticJoint
- PulleyJoint
- RevoluteJoint
- RopeJoint
- WeldJoint
- WheelJoint
- ColliderBase
- ChainCollider 2D線形碰撞體
- CircleCollider 2D圓形碰撞體
- PolygonCollider 2D多邊形碰撞體
- BoxCollider 2D矩形碰撞體
- Widget 相對布局插件
- ConstraintComponent 約束組件的父類
2.1 腳本處理 Script
掛腳本的原則
- 腳本要控制哪個節(jié)點悔醋,就掛在哪個節(jié)點上摩窃。
- 如果是全局的管理類,一般都會掛到根節(jié)點上。
生命周期:
- onAwake() 組件被激活后執(zhí)行猾愿,此時所有節(jié)點和組件均已創(chuàng)建完畢鹦聪,此方法只執(zhí)行一次。
- onEnable() 組件被啟用后執(zhí)行蒂秘,比如節(jié)點被添加到舞臺后泽本。
- onStart() 第一次執(zhí)行update之前執(zhí)行,只會執(zhí)行一次姻僧。
- onTriggerEnter(other:any,self:any,contact:any) 開始碰撞時執(zhí)行
- onTriggerStay(other:any,self:any,contact:any) 持續(xù)碰撞時執(zhí)行
- onTriggerExit(other:any,self:any,contact:any) 結束碰撞時執(zhí)行
- onMouseDown(e:laya.events.Event) 鼠標按下時執(zhí)行
- onMouseUp(e:laya.events.Event) 鼠標抬起時執(zhí)行
- onClick(e:laya.events.Event) 鼠標點擊時執(zhí)行
- onStageMouseDown(e:laya.events.Event) 鼠標在舞臺按下時執(zhí)行
- onStageMouseUp(e:laya.events.Event) 鼠標在舞臺抬起時執(zhí)行
- onStageClick(e:laya.events.Event) 鼠標在舞臺點擊時執(zhí)行
- onStageMouseMove(e:laya.events.Event) 鼠標在舞臺移動時執(zhí)行
- onDoubleClick(e:laya.events.Event) 鼠標雙擊時執(zhí)行
- onRightClick(e:laya.events.Event) 鼠標右鍵點擊時執(zhí)行
- onMouseMove(e:laya.events.Event) 鼠標移動時執(zhí)行
- onMouseOver(e:laya.events.Event) 鼠標經(jīng)過節(jié)點時觸發(fā)
- onMouseOut(e:laya.events.Event) 鼠標離開節(jié)點時觸發(fā)
- onKeyDown(e:laya.events.Event) 鍵盤按下時執(zhí)行
- onKeyPress(e:laya.events.Event) 鍵盤產(chǎn)生一個字符時執(zhí)行
- onKeyUp(e:laya.events.Event) 鍵盤抬起時執(zhí)行
- onUpdate() 每幀更新時執(zhí)行规丽,盡量不要在這里寫大循環(huán)邏輯或者使用getComponent方法
![][componentlifecycle]
2.2 碰撞
1. 基本概念
- 鋼體 rigidbody: 在運動中和受力作用后,形狀和大小不變撇贺,而且內(nèi)部各點的相對位置不變的物體赌莺。
- 碰撞體 collider:碰撞體是給物體加一個判定框,當碰撞框重疊的時候松嘶,兩物體發(fā)生碰撞雄嚣。
- 關節(jié)joint: 關節(jié)可以對兩個或多個物體進行一種約束。
剛體屬性:
- isKinematic是否為運動剛體
- mass質量
- gravity 重力
- angularVelocity 角速度
- angularDamping 角阻尼
- linearVelocity 線性速度
- linearDamping 線性阻尼
碰撞:
- 碰撞器
- 3D碰撞器喘蟆,由碰撞器和碰撞器形狀兩部分組成。
- 3D碰撞器根據(jù)特點的不同鼓鲁,分為靜態(tài)碰撞器蕴轨、剛體碰撞器、角色碰撞器骇吭。
- 觸發(fā)器 Listner
碰撞類型:
- PhysicsCollider: 靜態(tài)碰撞器 它的特性是不受力橙弱,不會產(chǎn)生物理移動。
- Rigidbody3D: 剛體&碰撞器
- isKinematic=false: 默認情況下,動力學類型的剛體碰撞器,通常用動力學剛體碰撞器進行受力的交互反饋燥狰。例如棘脐,撞擊后的反彈、飛出或者倒下龙致,放在空中會受重力影響而掉落
- isKinematic=true: 運動學類型剛體碰撞器,不受重力蛀缝、不受速度、不受其它力的影響目代,在物理世界中永遠處于靜止屈梁,只能通過transform去改變節(jié)點坐標來移動。有移動的碰撞器需求榛了,例如來回移動的跳板或障礙
- CharacterController: 角色碰撞器,角色控制器是無法設置為觸發(fā)器的在讶。但是,角色碰撞器與觸發(fā)器進行接觸霜大,仍然可以激活觸發(fā)器的生命周期方法构哺。繼承于物理組件的父類PhysicsComponent
碰撞形狀:
- LayaAir引擎支持8種3D碰撞形狀
- 盒形BoxColliderShape
- 球形SphereColliderShape
- 圓柱形CylinderColliderShape
- 膠囊形CapsuleColliderShape
- 圓錐形ConeColliderShape
- 平面形狀StaticPlaneColliderShape
- 復合形狀CompoundColliderShape
- 網(wǎng)格形狀MeshColliderShape
- Unity中可導出的碰撞形狀
- 盒形碰撞體Box collider
- 球形碰撞體Sphere Collider
- 膠囊形碰撞體Capsule Collider
- 網(wǎng)格碰撞體 Mesh Collider
//使用示例
//1. 創(chuàng)建圓錐形3D模型節(jié)點對象
let cone = new Laya.MeshSprite3D(Laya.PrimitiveMesh.createCone(raidius, height));
//把圓錐形3D節(jié)點對象添加到3D場景節(jié)點下
this.newScene.addChild(cone);
//設置隨機位置
this.tmpVector.setValue(Math.random() * 6 - 2, 6, Math.random() * 6 - 2);
cone.transform.position = this.tmpVector;
//2. 為圓錐形3D節(jié)點對象創(chuàng)建剛體碰撞器
let _rigidBody = <Laya.Rigidbody3D>(cone.addComponent(Laya.Rigidbody3D));
//創(chuàng)建圓錐形碰撞器形狀(使用節(jié)點對象的值,保持一致性)
let coneShape = new Laya.ConeColliderShape(raidius, height);
//為剛體碰撞器添加碰撞器形狀
_rigidBody.colliderShape = coneShape;
2. 生命周期方法
檢測物理碰撞的方式有兩種:
- 碰撞事件生命周期方法
- onCollisionEnter 剛發(fā)生物理碰撞時战坤,也就是碰撞事件生命周期內(nèi)的第一次進入碰撞曙强,自動執(zhí)行的生命周期虛方法残拐,該方法只會執(zhí)行一次。
- onCollisionStay 持續(xù)的物理碰撞時旗扑,也就是碰撞事件生命周期內(nèi)的第二次碰撞到碰撞離開前蹦骑,自動執(zhí)行的生命周期虛方法。該方法在持續(xù)碰撞期間臀防,每幀都會執(zhí)行眠菇。
- onCollisionExit 物理碰撞結束時,自動執(zhí)行的生命周期虛方法袱衷,該方法只會執(zhí)行一次捎废。
- 觸發(fā)事件生命周期方法
- onTriggerEnter 剛發(fā)生物體接觸時,也就是觸發(fā)事件生命周期內(nèi)的第一次進行接觸致燥,自動執(zhí)行的生命周期虛方法登疗,該方法只會執(zhí)行一次。
- onTriggerStay 持續(xù)的物體接觸時嫌蚤,也就是觸發(fā)事件生命周期內(nèi)的第二次接觸到接觸離開前辐益,自動執(zhí)行的生命周期虛方法。該方法在持續(xù)接觸期間脱吱,每幀都會執(zhí)行智政。
- onTriggerExit 物體接觸結束時,自動執(zhí)行的生命周期虛方法箱蝠,該方法只會執(zhí)行一次续捂。
碰撞事件的生命周期方法永遠不會與觸發(fā)事件的生命周期方法同時激活,只能是碰撞事件或者是觸發(fā)事件
無論是碰撞事件還是觸發(fā)事件的生命周期方法宦搬,從進入到離開的順序皆為“Enter,Stay,Stay,……,Exit”牙瓢。
3. 分組
- collisionGroup: 碰撞組
由于碰撞組之間的碰撞依據(jù)是位運算的按位與,按位與的計算結果非0則可以碰撞间校,為0則不可碰撞矾克。
//Physics3DUtils工具類的COLLISIONFILTERGROUP_ALLFILTER屬性值為-1,-1與任何2的冪值進行按位與都非0憔足,所以取該屬性值為分組時聂渊,則所有的碰撞組都可碰撞。
xxx.collisionGroup = Laya.Physics3DUtils.COLLISIONFILTERGROUP_ALLFILTER;
- canCollideWith: 過濾碰撞組
碰撞器的canCollideWith屬性可以用于指定與哪個組碰撞四瘫,指定哪個汉嗽,就可以與哪個碰撞。其它的都不可以碰撞找蜜,起到了過濾其它碰撞組的效果
//指定xxx碰撞器可以與其發(fā)生碰撞的碰撞組(本例只與自定義組1碰撞)
xxx.canCollideWith = Laya.Physics3DUtils.COLLISIONFILTERGROUP_CUSTOMFILTER1;
1.5相機
2D相機
把所有東西放到一個sprite下面饼暑,通過設置scrollRect來達到類似的效果
3D相機
3. 動畫
3.1 2D動畫
- EventDispatcher
- Node
-Sprite- AnimationBase
- FrameAnimation
- Animation
- AnimationBase
- Node
- Tween
- Ease
- Component
- Animator
1. 圖集動畫
laya.display.Animation
- 圖集加載:
方法1:loadAtlas() 加載圖集
方法2:createFrames創(chuàng)建動畫模板
方法3: loadImages直接播放圖集中指定的動畫
//方法1:
this.roleAni = new Laya.Animation();
//加載動畫圖集,加載成功后執(zhí)行回調方法
this.roleAni.loadAtlas("res/atlas/role.atlas",Laya.Handler.create(this,onLoaded));
function onLoaded(){
//添加到舞臺
Laya.stage.addChild(this.roleAni);
}
//方法2:
this.roleAni = new Laya.Animation();
//加載動畫圖集,加載成功后執(zhí)行回調方法
this.roleAni.loadAtlas("res/atlas/role.atlas",Laya.Handler.create(this,onLoaded));
function onLoaded(){
//添加到舞臺
Laya.stage.addChild(this.roleAni);
//創(chuàng)建動畫模板dizziness
Laya.Animation.createFrames(aniUrls("die",6),"dizziness");
//循環(huán)播放動畫
this.roleAni.play(0,true,"dizziness");
}
/**
* 創(chuàng)建一組動畫的url數(shù)組(美術資源地址數(shù)組)
* aniName 動作的名稱弓叛,用于生成url
* length 動畫最后一幀的索引值彰居,
*/
function aniUrls(aniName,length){
var urls = [];
for(var i = 0;i<length;i++){
//動畫資源路徑要和動畫圖集打包前的資源命名對應起來
urls.push("role/"+aniName+i+".png");
}
return urls;
}
//方法3:
Laya.loader.load("res/atlas/role.atlas",Laya.Handler.create(this,onLoaded));
function onLoaded(){
//創(chuàng)建動畫實例
this.roleAni = new Laya.Animation();
//添加到舞臺
Laya.stage.addChild(this.roleAni);
//通過數(shù)組加載動畫資源,然后用play方法直接播放撰筷。由于loadImages方法返回的是Animation對象本身陈惰,可以直接使用“l(fā)oadImages(...).play(...);”語法。
this.roleAni.loadImages(aniUrls("move",6)).play();
}
2. 緩動動畫
- tween
- Tween 緩動類用以實現(xiàn)目標對象屬性的緩動毕籽,例如目標對象的x或y軸的緩動距離等目標值設置抬闯,以及緩動開始、停止关筒、清理等設置
- Ease
- 類定義了大量的緩動函數(shù)溶握,以便實現(xiàn) Tween 動畫的具體緩動效果
Tween使用:
- from
- from是從緩動目標點向初始位置產(chǎn)生運動(從緩動目標位置來)
![][from]
- from是從緩動目標點向初始位置產(chǎn)生運動(從緩動目標位置來)
- to
- to是從初始位置向緩動目標的位置產(chǎn)生運動(到緩動目標位置去)
![][to]
- to是從初始位置向緩動目標的位置產(chǎn)生運動(到緩動目標位置去)
3. 時間軸動畫
- 在LAYAIDEL中制作時間軸動畫,輸出文件 .ani
- 使用:
//1. 加載圖集成功后蒸播,執(zhí)行onLoaded回調方法
Laya.loader.load("res/atlas/ui.atlas", Laya.Handler.create(this, onLoaded));
//2. 創(chuàng)建一個Animation實例
var tl = new Laya.Animation();
//加載動畫文件
tl.loadAnimation("TimeLine.ani");
//3. 添加到舞臺
Laya.stage.addChild(tl);
//播放Animation動畫
tl.play();
4. 骨骼動畫
- Spine骨骼動畫
- IDE內(nèi) 生成 sk文件
- Spine骨骼動畫適配版 skel文件
- DragonBones骨骼動畫
- 在IDE中繪制骨骼動畫
- 使用:
//初始化舞臺
Laya.init(1334,750);
//創(chuàng)建一個Skeleton對象
var skeleton = new Laya.Skeleton();
//添加到舞臺
Laya.stage.addChild(skeleton);
skeleton.pos(600,700);
//通過加載直接創(chuàng)建動畫
skeleton.load("res/spine/spineboy/spineboy.sk");
3.2 3D動畫
LayaAir3D支持unity導出Mecanim動畫系統(tǒng)睡榆。
- 在Unity3D制作動畫
- 導出后的資源拷貝到項目 bin/res 目錄下
- 加載動畫
var ani= role3D.getChildAt(0).getComponent(Laya.Animator);
- 播放控制
//獲取精靈
var monkey = Laya.Loader.getRes("res/threeDimen/skinModel/LayaMonkey/LayaMonkey.lh");
this.scene.addChild(monkey);
//獲取角色動畫組件
var ani = monkey.getChildAt(0).getComponent(Laya.Animator);
//創(chuàng)建一個動畫動作狀態(tài)
var state1 = new Laya.AnimatorState();
//設置動作狀態(tài)的名稱
state1.name = "hello";
//設置動作狀態(tài)播放的起始時間(起始時間與結束時間的設置為0-1的百分比數(shù)值) 要截取的時間點 / 動畫的總時長
state1.clipStart = 10/40;
//設置動作狀態(tài)播放的結束時間
state1.clipEnd = 20/40;
//得到默認動畫賦值給Clip(getDefaultState默認動畫為Unity中animation的數(shù)組順序0下標的動畫)
state1.clip = ani.getDefaultState().clip;
//動畫播放是否循環(huán)
state1.clip.islooping = true;
//添加動畫狀態(tài)到動畫組件里
this.ani.addState(state1);
//播放動畫
this.ani.play("hello");
4. 資源
4.1 資源管理
- EventDispatcher
- Loader
Laya.Loader由LoaderManager統(tǒng)一管理,一般情況下袍榆,開發(fā)是不需要自己創(chuàng)建Loader實例胀屿。
4.2 網(wǎng)絡資源
- EventDispatcher
- HttpRequest
- Socket
4.3 多媒體
聲音
- SoundManager
- EventDispatcher
- Sound
- SoundChannel
SoundManager 是一個聲音管理類。提供了對背景音樂包雀、音效的播放控制方法宿崭。 引擎默認有兩套聲音方案:WebAudio和H5Audio 播放音效,優(yōu)先使用WebAudio播放聲音馏艾,如果WebAudio不可用,則用H5Audio播放奴愉,H5Audio在部分機器上有兼容問題
視頻
- EventDispatcher
- Node
- Sprite
- Video
- Sprite
- Node
Video將視頻顯示到Canvas上琅摩。Video可能不會在所有瀏覽器有效
4.4 定時器資源
- Timer
- EventDispatcher
- Node (有Timer的功能)
- 延遲:
Laya.timer.callLater
Laya.timer.once(delay, ...)
Laya.timer.frameOnce(delay, ...)
- 間隔循環(huán)
Laya.timer.loop
Laya.timer.frameLoop
- 暫停恢復
Laya.timer.pause()
Laya.timer.resume()
- 結束
Laya.timer.clear()
Laya.timer.clearAll()
4.5 鼠標事件
//第1種
{
//在舞臺上添加鼠標事件監(jiān)聽
Laya.stage.on(Laya.Event.MOUSE_DOWN,this, this.onMouseDown);
}
//點擊觸發(fā)事件
onMouseDown() {
//記錄點擊到舞臺上的點
this.point.x = Laya.MouseManager.instance.mouseX;
this.point.y = Laya.MouseManager.instance.mouseY;
//產(chǎn)生射線
this.camera.viewportPointToRay(this.point,ray);
//拿到射線碰撞的物體
this.scene.physicsSimulation.rayCast(this.ray,this.outHitResult);
//如果碰撞到物體
if (this.outHitResult.succeeded)
{
//刪除碰撞到的物體
this.text.text = "碰撞到了" + this.outHitResult.collider.owner.name ;
console.log("碰撞到物體6稹房资!")
}
}
//第2種
export default class MouseScript extends Laya.Script3D{
constructor(){super();}
//物體必須擁有碰撞組件(Collider)
//當被鼠標點擊
onMouseDown(e){
//console.log("點擊到了我box",owner.name);
//從父容器銷毀我自己
this.owner.removeSelf();
}
}
this.staticLayaMonkey.addComponent(MouseScript);
4.6 統(tǒng)計
- Stat
是一個性能統(tǒng)計面板,可以實時更新相關的性能參數(shù)
method:
- show()
- hide()
- enable()
- onclick()
4.7 儲存
- localStorage
- Browser
localStorage 用于沒有時間限制的數(shù)據(jù)存儲
sessionStorage 針對一個session會話的數(shù)據(jù)存儲檀头,存儲在sessionStorage中的數(shù)據(jù)會在瀏覽器會話結束時(瀏覽器關閉時)被清除轰异。可以從window中拿到
1. LocalStorage
method:
- clear():void 清除本地存儲信息
- getItem(key:string):string 獲取指定鍵名的值
- getJSON(key:string):any 獲取指定鍵命對應的對象類型值
- removeItem(key:string):void 刪除指定鍵名的信息
- setItem(key:string, value:string):void 存儲指定鍵名和字符串類型的鍵值
- setJSON(key:string, value:any):void 存儲指定鍵名及其對應的Object對象類型的值
2. sessionStorage
Laya.Browser繼承自laya.utils.Browser暑始,時瀏覽器代理類搭独,封裝了瀏覽器及原生JS提供的功能。
// 獲取當前頁面中的sessionStorage會話對象
const sessionStorage:any = Laya.Browser.window.sessionStorage;
5. 進階
5.1 H5通信
Laya.Browser:
properties:
- document dom樹
- window 窗口
- container 畫布
method:
- supportLocalStorage:boolean 是否支持LocalStorage
- supportWebAudio:boolean 是否支持WebAudio
- window:any 獲取瀏覽器原生window對象的引用
//添加dom
Laya.Browser.document.body.appendChild(input);
5.2 Android通信
conch
conch只能LayaNative環(huán)境下調用廊镜,在網(wǎng)頁版本中是沒有conch定義的牙肝,所以需要判斷一下是否存在
Js調用
if(window.conch){
window.conch.setOnBackPressedFunction(()=>{
console.log('press back '+n);
if(n-- <=0){
window.conch.exit();
}
else{
//用戶自己的代碼,例如返回上層頁面
}
});
}
Android調用
ConchJNI. ("common.Utils.revive()");