Leap Motion和Cocos2d(Xcode),在设备连接/断开时显示图像?

时间:2013-07-30 00:11:23

标签: objective-c cocos2d-iphone leap-motion

我正在将我的Cocos2D游戏移植到Leap Motion。我已实施控制,但部分提交指南规定您必须在设备连接或未连接时提供可视指示。

Leap代码中告诉您设备已断开连接的部分是这个(我添加了一些我遇到问题的自定义代码,只有NSLog作为标准):

- (void)onDisconnect:(NSNotification *)notification {

    CCDirector *director = [CCDirector sharedDirector];
    CGSize winSize = [director winSize];

CCSprite *connect1 = [CCSprite spriteWithFile:[AssetHelper getDeviceSpecificFileNameFor:@"connecttest.png"]];
connect1.position = CGPointMake(winSize.width / 2, winSize.height / 2);
[self addChild:background2 z:2];


    NSLog(@"Disconnected");

}

如果我启动应用程序一切正常,但断开Leap不会显示图像。 Z位置是正确的,我知道该函数有效,因为我看到“在日志中断开连接”,如果我用终止应用程序函数替换CCSprite代码,则游戏退出。

我也尝试用场景加载替换代码。移除控制器将推送到另一个场景,但它不是最优雅的解决方案,也不会在启动时执行。

我怀疑它可能是一个时间因素,图像出现然后很快消失。

我真的不知道。我需要做的是在设备断开连接时显示图像,然后在重新连接时消失。

任何线索?

1 个答案:

答案 0 :(得分:0)

这是令人尴尬的,这是非常简单的事情,但我责备睡眠剥夺; - )

初始化控制器时,您只需查询[controller isConnected]即可。我从来没有在SDK中找到任何对它的引用。

如果有人需要,我的完整代码块就在这里。

- (void)onInit:(NSNotification *)notification {  NSLog(@"Initialized");

if([controller isConnected])
{
    CCLayer *layer = [CCLayer node];
    CCSprite *label = [CCSprite spriteWithFile:[AssetHelper getDeviceSpecificFileNameFor:@"connecttest2.png"]];
    [layer addChild:label];
    [[CCDirector sharedDirector] setNotificationNode:layer];
    CCDirector *director = [CCDirector sharedDirector];
    CGSize winSize = [director winSize];
    layer.position = CGPointMake(winSize.width / 2, winSize.height / 2);
} else {


    CCLayer *layer = [CCLayer node];
    CCSprite *label = [CCSprite spriteWithFile:[AssetHelper getDeviceSpecificFileNameFor:@"connecttest.png"]];
    [layer addChild:label];
    [[CCDirector sharedDirector] setNotificationNode:layer];
    CCDirector *director = [CCDirector sharedDirector];
    CGSize winSize = [director winSize];
    layer.position = CGPointMake(winSize.width - (winSize.width * 0.5), winSize.height - (winSize.height * 0.90));

}

}

由于它是一个全局CCLayer节点,它似乎没有响应任何删除方法所以我所做的是在onConnected方法中再次重复相同的代码,并在设备完成后将断开连接的图像切换为1x1透明像素认可。

不是最好的黑客,但它能很好地完成工作。