CoCos2d Pixels и Позиционирование - PullRequest
0 голосов
/ 15 февраля 2012

Я гуглил и искал переполнение стека повсюду, но есть ли вообще какой-нибудь способ выяснить, какой пиксель является какой точкой? Например, есть ли какое-нибудь приложение, которое может определить, что вы указали, скажем, (321, 199)?

И пока я здесь, в CoCos2d, я использовал симулятор iPhone 5.0, поэтому я предполагаю, что он имеет дисплей сетчатки. Дело в том, что, когда я сказал CoCos2d разместить спрайт в (516, 724), мне пришлось сократить его до 320x480 измерений. Я думал, что сетчатка была 640x960.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Как и UIKit, cocos облегчает работу с обоими разрешениями, работая с «точками».

Точка на дисплее без сетчатки составляет один пиксель, а на дисплее сетчатки - два пикселя.и высотой два пикселя.

Таким образом, даже при работе на устройстве Retina вы работаете с сеткой 320x480 точек.

0 голосов
/ 15 февраля 2012

да, я только что сделал пример приложения, который сделал именно это

HelloWorld.m

//
//  HelloWorldLayer.m
//  FindCocosCoord
//

#import "HelloWorldLayer.h"

CCLabelTTF *touchLabelX;
CCLabelTTF *touchLabelY;
CCSprite *touchSprite;

@implementation HelloWorldLayer

+(CCScene *) scene
{
    // 'scene' is an autorelease object.
    CCScene *scene = [CCScene node];

    // 'layer' is an autorelease object.
    HelloWorldLayer *layer = [HelloWorldLayer node];

    // add layer as a child to scene
    [scene addChild: layer];

    // return the scene
    return scene;
}

-(id) init
{
    if( (self=[super init])) {
        self.isTouchEnabled = YES;
        touchLabelX = [CCLabelTTF labelWithString:@"X = " fontName:@"Marker Felt" fontSize:20];
        touchLabelX.position = ccp(100,50);
        [self addChild:touchLabelX];

        touchLabelY = [CCLabelTTF labelWithString:@"Y = " fontName:@"Marker Felt" fontSize:20];
        touchLabelY.position = ccp(170,50);
        [self addChild:touchLabelY];

        touchSprite = [CCSprite spriteWithFile:@"Icon-Small.png"];
        touchSprite.position = ccp(0,0);
        [self addChild:touchSprite];
    }
    return self;
}

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch* myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView: [myTouch view]];
    location = [[CCDirector sharedDirector]convertToUI:location];

    touchSprite.position = location;

    touchX = touchSprite.position.x;
    touchY = touchSprite.position.y;

    NSLog(@"Location X = %i", (int)touchX);
    NSLog(@"Location Y = %i", (int)touchY);

    NSString *touchXstring = [NSString stringWithFormat:@"X = %i", (int)touchX];
    NSString *touchYstring = [NSString stringWithFormat:@"Y = %i", (int)touchY];

    [touchLabelX setString:touchXstring];
    [touchLabelY setString:touchYstring];

}

- (void) dealloc
{
    [super dealloc];
}
@end

HelloWorld.h

#import "cocos2d.h"

@interface HelloWorldLayer : CCLayer
{
    int touchX,touchY;
}

+(CCScene *) scene;

@end
...