SKScene類
繼承自 | SKEffectNode:SKNode:UIResponder:NSObject |
符合 | NSCoding(SKNode) NSCopying(SKNode) NSObject(NSObject) |
框架 | ?/System/Library/Frameworks/SpriteKit.framework |
可用性 | 可用于iOS 7.0或者更晚的版本 |
聲明于 | SKScene.h |
參考指南 | Sprite Kit Progamming Guide |
?
概覽
?
重要提示:這是一個初步的API或者開發技術文檔。雖然已經審閱了本文檔的技術準確性,但是它不是最終的版本。本機密信息僅適用于蘋果開發者計劃的注冊會員。蘋果提供這些機密信息來幫助你采用這些技術和編程接口。此信息如果有變更,根據本文檔實現的軟件應使用操作系統軟件和最終文檔測試。新版本的文檔可能會擁有新的API或者技術。 |
?
一個SKScene實例表示一個游戲中的場景。一個場景節點通常是節點樹中的根節點。節點樹中的其他節點負責提供游戲內容,場景節點則負責渲染和顯示。要顯示一個場景,你需要先將它present到一個SKView實例中。
一個場景通過以下的處理來計算內容
1.場景調用update:方法。
2.場景執行其子節點的動作。
3.場景調用didEvaluateActions方法。
4.場景執行加入到場景中的物理體的物理模擬。
5.場景調用didSimulatePhysics方法。
子類節點
有時會創建場景類的子類。在子類場景中,要創景子類場景的內容以及執行邏輯。
方法
初始化一個場景
?
+ sceneWithSize: |
?
創建并返回一個新的場景實例。
+ (SKScene *)sceneWithSize:(CGSize)size
?
參數 | size:場景的大小 |
返回值 | 一個新的場景實例 |
?
論述
這個類方法創建一個新的場景并調用它的initWithSize:方法初始化這個場景。
?
?
- initWithSize |
?
初始化一個新的場景實例。
- (id)initWithSize:(CGSize)size
?
參數 | size:場景的大小 |
返回值 | 一個新的初始化好的場景實例 |
?
論述
這是類方法指定的初始化方法。
轉變視圖和場景的坐標系
?
?
- convertPointFromView: |
?
將視圖坐標系轉成場景坐標系。
- (CGPoint)converPointFromView:(CGPoint)point
?
參數 | point:視圖坐標系中的一個點 |
返回值 | 這個點在場景坐標系中的位置 |
?
論述
在調用該方法之前,場景必須已經被加到視圖中了。
?
?
- convertPointTOView: |
?
將場景坐標系轉成視圖坐標系。
- (CGPoint)converPointToView:(CGPoint)point
?
參數 | point:場景坐標系中的一個點 |
返回值 | 這個點在視圖坐標系中的位置 |
?
論述
在調用該方法之前,場景必須已經被加到視圖中了。
改變場景的大小
?
?
- didChangeSize: |
?
當場景大小發生改變時調用該方法。
- (void)didChangeSize:(CGSize)oldSize
?
參數 | oldSize:場景的原大小 |
返回值 | ? |
?
論述
這個方法通常會被子類重寫。
檢測場景的彈出改變。
?
?
- willMoveFromView: |
?
該方法會在場景移出視圖之前調用。
- (void)willMoveFromView:(SKView *)view
?
參數 | view:持有該場景的視圖 |
返回值 | ? |
?
論述
這個方法通常會被子類重寫。
?
?
- didMoveToView: |
?
該方法會在場景彈到視圖上之后調用。
- (void)didMoveToView:(SKView *)view
?
參數 | view:持有該場景的視圖 |
返回值 | ? |
?
論述
這個方法通常會被子類重寫。
執行動畫循環
?
?
- update: |
?
在場景中動作執行之前需要執行的更新。
- (void)update:(NSTimeInterval)currentTime
?
參數 | currentTime:已經過去的時間,保證單調遞增 |
返回值 | ? |
?
論述
不要直接調用這個方法,當場景加入到視圖中,并且不是暫停狀態時,它每一幀會被調用一次。你的場景子類應該重寫這個方法,并執行一些需要的更新。
?
- didEvaluateActions |
?
在場景中動作執行之后需要執行的更新。
- (void)didEvaluateActions
論述
不要直接調用這個方法,當場景加入到視圖中,并且不是暫停狀態時,它每一幀會被調用一次。你的場景子類應該重寫這個方法,并執行一些需要的更新。
?
- didSimulatePhysics |
?
在物理模擬執行之后需要執行的更新。
- (void)didSimulatePhysics
論述
不要直接調用這個方法,當場景加入到視圖中,并且不是暫停狀態時,它每一幀會被調用一次。你的場景子類應該重寫這個方法,并執行一些需要的更新。
屬性
查看視圖相關屬性
?
anchorPoint |
?
場景原點在視圖中的位置。
@property (atomic) CGPoint?anchorPoint
論述
指定場景的坐標位置。默認值為(0,0),表示場景在視圖矩形的左下角。
?
?
scaleMode |
?
定義場景如何映射到視圖。
@property (atomic) SKSceneScaleMode?scaleMode
論述
場景的大小和彈它出來的視圖大小不相同是有可能的。該屬性定義了場景如何映射到視圖。詳細值參見Scene Scaling Modes部分。默認值為SKSceneScaleModeFill。
?
?
view |
?
場景所在的視圖。只讀。
@property (atomic, weak, readonly) SKView *view
論述
要彈出場景,需要調用SKView類的presentScene:方法或者presentScene:transition:方法。
設置場景的背景色
?
backgroundColor |
?
場景的背景色。
@property (atomic, retain) SKColor *backgroundColor
論述
默認值為一個灰色的顏色值(RGBA0.15,0.15,0.15,1.0)。
改變場景的大小
?
?
size |
?
場景的大小。
@property (atomic) CGSize *size
場景中運行的物理世界
?
?
physicsWorld |
?
場景中的物理世界。
@property (atomic, readonly) SKPhysicsWorld *physicsWorld
論述
所有的場景自動模擬添加物理體的節點的物理特性。通過這個屬性可以獲取場景的全局物理屬性,比如重力加速度。
常量
決定場景的彈出模式
typedef NS_ENUM(NSInteger,
SKSceneScaleMode){
SKSceneScaleModeFill,
SKSceneScaleModeAspectFill,
SKSceneScaleModeAspectFit,
SKSceneScaleModeResizeFill
}
?
?
SKSceneScaleModeFill | 場景的每個軸獨立縮放,場景完全映射到視圖中 |
SKSceneScaleModeAspectFill | 場景中每個軸使用相同的縮放因子,保證視圖被完全填充,場景可能被剪裁 |
SKSceneScaleModeAspectFit | 場景中每個軸使用相同的縮放因子,保證整個場景可見 |
SKSceneScaleModeResizeFill | 場景不縮放,場景自動調整大小以適應視圖 |