2014-09-22 72 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

相关问题