2014-09-23 19 views
2

我剛剛學習了SpriteKit和Objective-C,我想知道爲什麼我的視圖的起源不在屏幕上。我只是在xCode 6中創建了一個默認的SpriteKit項目,並且只是添加了一個NSLog來向我顯示觸摸的當前位置。控制檯上的輸出顯示我,這個位置在x-coodrinate上是260.0,而不是在0.0附近。描述場景實現文件中我的問題SpriteKit默認項目 - 爲什麼視圖來自屏幕?

一個例子: 當我添加SKSpriteNode與背景圖像,並將其位置在屏幕的起源與:

-(void)didMoveToView:(SKView *)view { 
... 
SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"Starfield"]; 
background.anchorPoint = CGPointZero; 
background.position = CGPointZero; 
[self addChild:background]; 
... 
} 

畫面也出屏幕,而不是在設置了anchorPoint的左下角。

我試圖在橫向模式下,與各種設備(iPhone4S,5,6,6 +)和純肖像模式,但它也沒有工作。 感謝您的幫助。

Greatings,

馬丁

+0

哪個xcode,5或6? – LearnCocos2D 2014-09-23 19:50:57

+0

對於這個例子我用xcode6.1 – 2014-09-23 20:00:35

+0

它的xcode 6.0.1,v6.1甚至還沒有在測試版;) – LearnCocos2D 2014-09-23 20:06:30

回答

2

在xcode 6.0.1中,他們使用這個導致問題的新的解析器。我有同樣的問題,因爲你,直到我刪除了取檔代碼,並恢復到SKSCENES是如何這是這個取檔之前創建的:

GameScene * scene = [GameScene sceneWithSize:skView.frame.size]; 

//instead of this 

GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"]; 

回到老樣子一切工作就好了。希望這可以幫助別人。

+1

謝謝,現在一切正常。 – 2014-09-24 08:04:43

1

看看scaleMode屬性,它在GameViewController的viewDidLoad方法設置。以下是描述您可以使用的不同模式的文檔。 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKScene_Ref/index.html#//apple_ref/c/tdef/SKSceneScaleMode

+0

感謝您的評論,這有助於我很多。默認「SKSceneScaleModeAspectFill」已設置,當我將其更改爲「SKSceneScaleModeFill」時,x和y座標匹配。但是現在整個內容都被拉長了。是否有更好的解決方案來手動縮放每個節點? – 2014-09-24 06:43:47

+0

我目前正在研究一個非常類似的問題。我發現這個鏈接很有用http://blog.infinitecortex.com/2014/01/spritekit-understanding-skscene-scalemode/你也可以改變場景的大小。 – 2014-09-24 16:13:08

+1

這是一個類似的問題很好的答案http://stackoverflow.com/questions/25205882/dealing-with-different-ios-device-resolutions-in-spritekit – 2014-09-24 16:19:40

0

在您的ViewController.m中,將場景的縮放模式更改爲SKSceneScaleModeAspectFill。

它應該是這個樣子:

nameOfYourScene.scaleMode = SKSceneScaleModeAspectFill; 

希望幫助!

+0

感謝您的評論,這有助於我很多。默認「SKSceneScaleModeAspectFill」已設置,當我將其更改爲「SKSceneScaleModeFill」時,x和y座標匹配。但是現在整個內容都被拉長了。是否有更好的解決方案來手動縮放每個節點? – 2014-09-24 06:44:03

相關問題