开发者

Is it possible to to re-initialize an object in cocos2d

I have a class named insect child of sprite.I have created a instance of that class in GameLayer and then initialize with it using,

insect *bgg = [insect spriteWithFile:@"bird2a.gif"];

then i set a timer(10 second) to change the image using

*bgg = [insect spriteWithFile:@"2.gif"];

but my program crashes.Now my question is it possible to re-initialize an object or it is immutable??

I have another question, when i used

- (BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *) event

{

UITouch *touch = [touches anyObject];

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

CGPoin开发者_JAVA技巧t cpoint=[[Director sharedDirector] convertCoordinate:point2];
NSLog(@"In touch began");

}

in my insect class it cannot detect touch on 'bgg' object declared in GameLayer.But when I used this function in GameLayer it can detect touch.

whats wrong with my approach??Plz someone explain.

Advanced thanx for your reply.


Your program crashes because you have a typo. Remove the '*' from '*bgg'. That means you are dereferencing the pointer, then trying to apply the creation of a new object to the dereferenced pointer. You just want

bgg = [insect spriteWithFile:@"2.gif"];

However, it's overkill to create an entirely new sprite just to change the image. A Sprite is a subclass of TextureNode, so just use TextureNode's texture property to give a Sprite a different image.

Texture2D *newImage = [[TextureMgr sharedTextureMgr] addImage:@"2.gif"];
bgg.texture = newImage;

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜