Problem in calling a function from different class using protocols-iphone

Posted by Muniraj on Stack Overflow See other posts from Stack Overflow or by Muniraj
Published on 2010-03-19T11:36:33Z Indexed on 2010/03/19 11:41 UTC
Read the original article Hit count: 188

Filed under:

I use cocos2d for my game. In which I play a movie and have a separate overlay view for controls.The touches are detected in the overlay view. Now when the touches are detected the function in the game code has to be invoked. But the function is not detected and there is no error. I dont know what has gone wrong. Someone please help me. The code are as follows

The protocol part is

@protocol Protocol

@required

-(void) transition1:(id) sender;

@end

The function which is to be invoked in the game code is

  • (void) transition1:(id) sender

{

[[Director sharedDirector] replaceScene: [ [Scene node] addChild: [Layer4 node] z:0] ];

}

The code in the overlay view in MovieOverlayViewController.h

import "Protocol.h"

@interface MovieOverlayViewController : UIViewController

{ UIImageView *overlay;

NSObject <Protocol> *transfer;

}

@end

The code in the overlay view in MovieOverlayViewController.m

@implementation MovieOverlayViewController

  • (id)init { if ((self = [super init])) self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
    return self;
    }

-(void) viewWillAppear:(BOOL)animated {

overlay = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"overlay.png"]] autorelease];

[self.view addSubview:overlay];

}

  • (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];

    CGPoint point = [touch locationInView:self.view];

    NSLog(@"pointx: %f pointy:%f", point.x, point.y);

    if (CGRectContainsPoint(CGRectMake(1, 440, 106, 40), point)) {

          // the function is called here
    
    
    [transfer transition1: nil];
    

    } else if (CGRectContainsPoint(CGRectMake(107, 440, 106, 40), point)) NSLog(@"tab 2 touched");

}

  • (void)dealloc { [overlay release];

    [super dealloc]; }

@end

© Stack Overflow or respective owner

Related posts about iphone