SpriteKit框架之場景(SKScene類)

2021-10-14 11:43:38 字數 4361 閱讀 6891

前言當進入乙個遊戲之後,出現在螢幕上的內容叫做場景,每乙個遊戲都是有若干的場景組成的,在spritekit遊戲框架中的場景就是skscene物件組成,skscene類似於ios中的uiview物件.下面就說一下skscene關於的技術點.

skscene物件的建立(純**模式)

使用command +n ,如下圖,建立乙個場景.繼承於skscene父類.

skscene物件的初始化方法為-(instancetype)initwithsize:(cgsize)size,初始化方法中的引數size是用於設定場景的大小.我們可以在初始化方法中對場景的基本屬性進行設定.例如背景顏色,這裡先不說如何設定skscene物件的背景,這會涉及到skspritenode(精靈)物件的使用.我們看到建立的gamescene.m中什麼都沒有,乙個大空板,這時候,我們就需要過載我們的-(instancetype)initwithsize:(cgsize)size方法.在其中設定場景的背景顏色為白色.

#import "gamescene.h"

@implementation gamescene

-(instancetype)initwithsize:(cgsize)size

return self;

}@end

######注意: skcolor 是乙個巨集定義,當工程在ios的環境下執行,skcolor就等同於uicolor,當在os x的環境執行的時候就等同於nscolor.

skscene物件的顯示

skscene物件的顯示我們要遊戲工程的主入口gameviewcontroller中進行設定.在顯示之前,我們需要對場景的一些除錯屬性以及繪製屬性進行設定.屬性列表如下.

屬性名稱

歸屬類說明

showsfps

skview

是否顯示遊戲的fps

showsnodecount

skview

是否顯示節點數(精靈數)

showsdrawcount

skview

是否顯示繪製數量

showsquadcount

skview

是否顯示矩形數量(預設為不開啟)

showsphysics

skview

是否顯示物理引擎

ignoressiblingorder

skview

是否利用z軸的層級深淺關係來定製繪製次序(繪製屬性)

設定完除錯屬性之後,我們需要對場景進行初始化和縮放模式(scalemode)的設定.縮放模式屬性列表如下.

屬性名稱

說明skscenescalemodefill

這個模式會讓場景全部顯示出來,但是會導致場景變形

skscenescalemodeaspectfill

此模式可以保證場景比例不變,會填充整個檢視,但可能只是部分場景顯示出來

skscenescalemodeaspectfit

此模式會保證場景比例不變,而且全部現在在檢視當中

skscenescalemoderesizefill

此模式可以保證場景與檢視的尺寸相匹配

對上面的屬性設定完成之後,使用- (void)presentscene:(nullable skscene *)scene;就可以顯示我們的場景了,當然了,這樣顯示的場景是沒有任何的動畫效果的.整體的**如下.

#import "gameviewcontroller.h"

#import "gamescene.h"

@implementation gameviewcontroller

- (void)viewdidload

效果圖如下

skscene物件的轉場動畫

上面skscene物件的顯示我們用到了- (void)presentscene:(nullable skscene *)scene;,這個顯示場景的方法是沒有任何動畫效果的.如果兩個場景需要動畫效果的切換,我們該如何實現呢?首先,我們新建乙個場景newgamescene,然後場景的背景顏色設定為紅色.

我們在gamescene.m中匯入newgamescene標頭檔案,然後在-(void)touchesbegan:(nsset*)touches withevent:(uievent *)event中進行場景的切換,這時候,我們需要使用presentscene:(nonnull skscene *) transition:(nonnull sktransition *)這個方法呼叫過渡動畫,我們看一下都有哪些過渡動畫(sktransition類方法),因為過渡效果太多,過渡效果需要自行演示…

+ (sktransition *)crossfadewithduration:(nstimeinterval)sec;//交叉淡入淡出

+ (sktransition *)fadewithduration:(nstimeinterval)sec;//乙個淡入淡出的動畫,先變為黑色,在切換到新場景

+ (sktransition *)fadewithcolor:(skcolor *)color duration:(nstimeinterval)sec;//乙個淡入淡出的動畫,先變為指定顏色,在切換到新場景

+ (sktransition *)fliphorizontalwithduration:(nstimeinterval)sec;//以水平中軸線垂直翻轉的動畫

+ (sktransition *)flipverticalwithduration:(nstimeinterval)sec;//以垂直中軸線水平翻轉的動畫

+ (sktransition *)revealwithdirection:(sktransitiondirection)direction duration:(nstimeinterval)sec;//舊場景向指定方向移出,新場景在舊場景下面的動畫

+ (sktransition *)moveinwithdirection:(sktransitiondirection)direction duration:(nstimeinterval)sec;//新場景從指定方向移入的動畫

+ (sktransition *)pushwithdirection:(sktransitiondirection)direction duration:(nstimeinterval)sec;//新場景向指定方向推入的過渡動畫

+ (sktransition *)doorsopenhorizontalwithduration:(nstimeinterval)sec;//從中間向兩邊水平開啟的動畫

+ (sktransition *)doorsopenverticalwithduration:(nstimeinterval)sec;//從中間想上下兩邊垂直開啟的動畫

+ (sktransition *)doorsclosehorizontalwithduration:(nstimeinterval)sec;//從左右兩邊水平關閉的動畫

+ (sktransition *)doorscloseverticalwithduration:(nstimeinterval)sec;;//從上下兩邊垂直關閉的動畫

+ (sktransition *)doorwaywithduration:(nstimeinterval)sec;//舊場景從中間向兩邊開啟,新場景從後方向螢幕靠近的動畫

場景切換**如下

#import "gamescene.h"

#import "newgamescene.h"

@implementation gamescene

-(instancetype)initwithsize:(cgsize)size

return self;

}-(void)touchesbegan:(nsset*)touches withevent:(uievent *)event

@end

—>skscene場景demo?

效能測試loadrunner場景問題之socket

2.2 socket場景問題 2.21在場景執行中,非同步交易socket連線中斷,同步交易正常進行。在bancs穩定性測試中遇到過該問題,經過檢查並不是系統出現故障導致服務中斷,而是loadrunner種場景設定的問題。由於分埠進行測試非同步指令碼分成了四個,在流水號取值時必須唯一,然而在場景設定...

效能測試loadrunner場景問題之socket

2.2?socket場景問題 2.21在場景執行中,非同步交易socket連線中斷,同步交易正常進行。在bancs穩定性測試中遇到過該問題,經過檢查並不是系統出現故障導致服務中斷,而是loadrunner種場景設定的問題。由於分埠進行測試非同步指令碼分成了四個,在流水號取值時必須唯一,然而在場景設定...

S2SI框架搭建之struts2

struts2是乙個基於mvc設計模式的web應用框架,它本質上相當於乙個servlet,在mvc設計模式中,struts2作為控制器 controller 來建立模型 m 與檢視 v 的資料互動。struts 2是struts的下一代產品,是在 struts 1和webwork的技術基礎上進行了合...