2014-09-22 83 views
0

我正在使用Xcode 6,並且我開始了一個SpriteKit模板的項目。首先,我想要做的是在提供的視圖的左下角添加一個節點。我試圖這樣做:爲什麼我的節點沒有出現在SpriteKit模板中?

@implementation GameScene 

-(void)didMoveToView:(SKView *)view { 
/* Setup your scene here */ 
SKLabelNode *myLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; 


SKSpriteNode *greenNode = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(100, 100)]; 

greenNode.anchorPoint = CGPointMake(0,0); 

greenNode.position = CGPointMake(10,10); 
[self addChild:greenNode]; 

這是無處可尋。但是,如果我設置它的位置是這樣的:

greenNode.position = CGPointMake(CGRectGetMidX(self.frame), 
           CGRectGetMidY(self.frame)); 

它坐在我的視野中很好。爲什麼我在使用(10,10)或(0,0)時看不到它。如果我將CGPoint設置爲(350,0),我確實會在左下角看到它。所以,我的問題是,爲什麼在這個默認模板中我的節點被放置在左邊350?我沒有改變這個模板中的任何東西。我覺得它與視圖控制器的viewdidload中提供的這一行代碼有關:

scene.scaleMode = SKSceneScaleModeAspectFill; 

但是,這樣做的目的是什麼?對新手有幫助嗎?謝謝!

回答

0

AspectFill會導致一些場景有不可見的內容。例如,假設你的場景是1000 * 800,但是它移動到一個400 * 400的視圖。這會導致你的場景縮小到500 * 400。這意味着場景左邊的50個點和你場景右邊的50分是不可見的。爲了避免這種情況,您可以將您的縮放模式設置爲AspectFit。

+0

工作。我看到我的視圖控制器默認設置爲600x600。我認爲它會默認設置爲手機的尺寸? – 2014-09-22 02:44:02

+0

您正在使用XCode 6.您手機的屏幕不是600 * 600,但默認情況下,「Any x Any」設置爲600 x 600。所以說,你的手機屏幕是320 * 480,這意味着你的視圖控制器將會是320 * 480,但是你的場景沒有任何佈局限制,所以它會被設置爲你在故事板中的任何值假設你正在使用)。您應該添加自動佈局約束。有關更多信息,請查看「尺寸類別XCode 6」,因爲它們是一項新功能。此外,這篇博文可能會有所幫助:http://www.learnswift.io/blog/2014/6/12/size-classes-with-xcode-6-and-swift – michaelsnowden 2014-09-22 02:47:19

+0

謝謝! – 2014-09-22 03:00:23

相關問題