临时

//

// cocos2d Hello World example

// http://www.cocos2d-iphone.org

//

 

// Import the interfaces

#import "HelloWorldScene.h"

 

// HelloWorld implementation

@implementation HelloWorld

@synthesize tileMap = _tileMap;

@synthesize background = _background;

@synthesize player = _player;

 

+(id) scene

{

// 'scene' is an autorelease object.

CCScene *scene = [CCScene node];

 

// 'layer' is an autorelease object.

HelloWorld *layer = [HelloWorldnode];

 

// add layer as a child to scene

[scene addChild: layer];

 

// return the scene

return scene;

}

 

-(void)setViewpointCenter:(CGPoint) position {

    

    CGSize winSize = [[CCDirector sharedDirector] winSize];

    

    int x = MAX(position.x, winSize.width / 2);

    int y = MAX(position.y, winSize.height / 2);

    x = MIN(x, (_tileMap.mapSize.width * _tileMap.tileSize.width

            - winSize.width / 2);

    y = MIN(y, (_tileMap.mapSize.height * _tileMap.tileSize.height

            - winSize.height/2);

    CGPoint actualPosition = ccp(x, y);

    

    CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2);

    CGPoint viewPoint = ccpSub(centerOfView, actualPosition);

    self.position = viewPoint;

    

}

 

// on "init" you need to initialize your instance

-(id) init

{

if( (self=[super init] )) {

 

        self.isTouchEnabled = YES;

        self.tileMap = [CCTMXTiledMaptiledMapWithTMXFile:@"TileMap.tmx"];

        self.background = [_tileMaplayerNamed:@"Background"];

        

        CCTMXObjectGroup *objects = [_tileMap objectGroupNamed:@"Objects"];

        NSAssert(objects != nil, @"'Objects' object group not found");

        NSMutableDictionary *spawnPoint = [objects objectNamed:@"SpawnPoint"];        

        NSAssert(spawnPoint != nil, @"SpawnPoint object not found");

        int x = [[spawnPoint valueForKey:@"x"] intValue];

        int y = [[spawnPoint valueForKey:@"y"] intValue];

        

        self.player = [CCSprite spriteWithFile:@"Player.png"];

        _player.position = ccp(x, y);

        [self addChild:_player]; 

        

        [selfsetViewpointCenter:_player.position];

        

        [self addChild:_tileMap z:-1];

        

    }

    returnself;

}

 

-(void) registerWithTouchDispatcher

{

[[CCTouchDispatchersharedDispatcher] addTargetedDelegate:self 

                                                     priority:0 swallowsTouches:YES];

}

 

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event

{

returnYES;

}

 

-(void)setPlayerPosition:(CGPoint)position {

    _player.position = position;

}

 

-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event

{

    

    CGPoint touchLocation = [touch locationInView: [touch view]];

    touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];

    touchLocation = [self convertToNodeSpace:touchLocation];

    

    CGPoint playerPos = _player.position;

    CGPoint diff = ccpSub(touchLocation, playerPos);

    if (abs(diff.x) > abs(diff.y)) {

        if (diff.x > 0) {

            playerPos.x += _tileMap.tileSize.width;

        } else {

            playerPos.x -= _tileMap.tileSize.width

        }    

    } else {

        if (diff.y > 0) {

            playerPos.y += _tileMap.tileSize.height;

        } else {

            playerPos.y -= _tileMap.tileSize.height;

        }

    }

    //player.position = playerPos; // Todo: Trymove

    

    if (playerPos.x <= (_tileMap.mapSize.width * _tileMap.tileSize.width) &&

        playerPos.y <= (_tileMap.mapSize.height * _tileMap.tileSize.height) &&

        playerPos.y >= 0 &&

        playerPos.x >= 0 ) {

        [self setPlayerPosition:playerPos];

    }

    

    [selfsetViewpointCenter:_player.position];

    

}

 

// on "dealloc" you need to release all your retained objects

- (void) dealloc

{

self.tileMap = nil;

    self.background = nil;

    self.player = nil;    

[superdealloc];

}

@end

 

posted @ 2013-05-27 22:16  六界剑仙  阅读(138)  评论(0)    收藏  举报