【发布时间】:2011-11-13 19:34:16
【问题描述】:
我有一个 CCScene。在它的右侧,我需要一个带有一些菜单元素的 UIScrollView。正如我在上一个问题Cocos2d and UIScrollView
中解释的那样,我是这样做的这是创建我的场景的方法
+(id) scene: (int) wld{
CCScene *scene = [CCScene node];
LevelsMenu *layer = [LevelsMenu node];
layer = [layer init:wld];
[scene addChild: layer];
[layer setScrollView:[LevelMenuControlView alloc]];
[[[CCDirector sharedDirector] openGLView] addSubview:layer.scrollView.view];
return scene;
}
注意 LevelMenuControlView 只是一个这样实现的 UIViewController:
- (void)loadView{
LevelMenuView *scrollView = [[LevelMenuView alloc] initWithFrame:[UIScreen
mainScreen].applicationFrame];
scrollView.contentSize = CGSizeMake(862, 480);
scrollView.delegate = scrollView;
[scrollView setUserInteractionEnabled:TRUE];
[scrollView setScrollEnabled:TRUE];
[scrollView setShowsVerticalScrollIndicator:FALSE];
[scrollView setShowsHorizontalScrollIndicator:FALSE];
self.view = scrollView;
[scrollView release];
}
而 LevelMenuView 是包含菜单元素的 UIScrollView
它工作得很好。现在的问题是,在场景的左侧我有一个精灵动画,如果我没有很好地触摸屏幕但是只要我向上或向下拖动滚动视图就会停止或以与滚动手指相同的速度前进!!!
有什么想法吗?
【问题讨论】:
-
为 Sprite 设置动画的代码是什么?也许它也会对触摸事件做出反应?你的意思是动画精灵移动(改变位置)还是精灵的帧改变(图像动画)?
-
我只是在 CCSpriteFrameCache 中加载一个 spritesheet 并安排一个选择器,在该选择器中我会定期使用从 FrameCache 中获取的 sprite 更改 sprite 显示的帧
-
那么也许您遇到了一个简单的性能问题,是这样吗?
-
它看起来像,但我想这不是让我的手指保持在一个点而不移动它,动画也会停止。一旦我移动触摸(并且以相同的速度),它就会再次开始移动。这很奇怪,我不知道问题出在哪里。我也尝试在不同的线程中生成精灵更新,但我尝试了相同的行为
-
每当 UIScrollView 获得焦点时,您是否会在 CCDirector 上调用 pause/resume 或 startAnimation/stopAnimation?
标签: iphone ios cocoa-touch cocos2d-iphone