1

以下のコードは、同じ .m ファイルでボイドを呼び出しているときにうまく機能しますが、セレクターをシーンの 2 番目のレイヤーに移動して、その 'MoveUpSelected' ボイド (スプライトの動きに対するアクションが含まれています) を取得したいと考えています。これどうやってするの?

HUDLayer.m 他のレイヤーと通信するためのレイヤー内のボタン コード

    self.dpad = [CCSprite spriteWithFile:@"dpad.png"];
    CCSprite *dpadSelectedSprite = [CCSprite spriteWithTexture:[dpad texture]];
    dpadSelectedSprite.color = ccGRAY;
    //float dpadHeight = flareSprite.texture.contentSize.height;
    CCMenuItemSprite *dpadButtons = [CCMenuItemSprite itemWithNormalSprite:dpad selectedSprite:dpadSelectedSprite target:Level1 selector:@selector(MoveUpSelected)];
    dpadButtons.position = CGPointMake(size.width / 2, 150);
    [menu addChild:dpadButtons];

Level1.m 第 2 層のボイドは、第 1 層ボタンによって呼び出されるのを待っています

- (void)MoveUpSelected {
    int yPosition = self.Player.position.y;
    yPosition += [self.Player texture].contentSize.height/2;

    CGSize size = [[CCDirector sharedDirector] winSize];
    if (yPosition >= (size.height - [self.Player texture].contentSize.height/2)) {
        yPosition = (size.height - [self.Player texture].contentSize.height/2);
    }

    self.Player.position = CGPointMake(self.Player.position.x, yPosition);
}

両方のレイヤーを別々のファイルに保持する GameScene1.m があります。

    +(id) scene
{
    CCScene *scene = [CCScene node];

    HudLayer *HUD = [HudLayer node];
    [scene addChild:HUD z:2];

    Level1 *layer = [Level1 node];
    [scene addChild:layer];

    return scene;
}

コード行で説明してください。

4

1 に答える 1