- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先声明,以下内容均基于cocos2d-x-2.1.4。
在cocos2d-x的HelloCpp工程中,可以看到在void AppDelegate::applicationDidEnterBackground()
中调用了CCDirector::sharedDirector()->stopAnimation();
(click here to check)。
它应该在应用程序处于非 Activity 状态时停止动画。它在 iOs 中表现完美。
但在 Android 中,在我调用此 stopAnimation()
之后,正在运行动画的元素将开始闪烁。由于设备性能较低,因此显示效果更差。
然后我尝试使用 CCDirector::sharedDirector()->pause()
,它表现不错,动画停止并且不闪烁。
所以我想知道这两种方法有什么区别。
在CCDirector.h
,我们可以看到这些代码:
/** Pauses the running scene.
The running scene will be _drawed_ but all scheduled timers will be paused
While paused, the draw rate will be 4 FPS to reduce CPU consumption
*/
void pause(void);
/** Stops the animation. Nothing will be drawn. The main loop won't be triggered anymore.
If you don't want to pause your animation call [pause] instead.
*/
virtual void stopAnimation(void) = 0;
这里说,“如果你不想暂停你的动画调用 [pause]。”,但事实上,如果我调用 pause()
,我可以暂停动画,所以我很困惑。
在这个post ,它表示如果在 void AppDelegate::applicationDidEnterBackground()
中调用 CCDirector::sharedDirector()->pause();
应用程序会崩溃。但是我自己测试过,在这个版本的iOs和Android上都没有崩溃。
所以,我想如果我使用 pause()
而不是 stopAnimation()
会发生什么。
然后我做了一些测试。最后我得到了结果,stopAnimation()
在 iOs 中表现优于 pause()
,但在 Android 中则相反。
所以我想将我的代码更改为:
void AppDelegate::applicationDidEnterBackground() {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
CCDirector::sharedDirector()->stopAnimation();
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
CCDirector::sharedDirector()->pause();
#endif
}
void AppDelegate::applicationWillEnterForeground() {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
CCDirector::sharedDirector()->startAnimation();
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
CCDirector::sharedDirector()->resume();
#endif
}
现在有人可以给我一些建议吗?或者,如果它不好,请告诉我原因。
最佳答案
Pause 将继续绘制和呈现帧缓冲区,但帧速率非常低(4 fps)。
StopAnimation 完全停止绘制。目前还没有定义显示器会发生什么——在 iOS 上它往往只是“卡住”,但根据 GL 驱动程序的实现,您体验到的闪烁也是一种可能的结果。这是双缓冲或三缓冲不断循环通过帧缓冲区,但其中只有一个包含 cocos2d 最后绘制的帧的内容。
停止动画仅适用于应用程序进入后台或以其他方式隐藏的情况,例如通过在其顶部呈现另一个 View 。否则使用暂停。
也许您只需要在应用进入前台时再次运行 startAnimation 以防止闪烁?当然不应该要求在一个平台上使用 pause 而在另一个平台上使用 stopAnimation。
关于android - cocos2d-x CCDirector,暂停/恢复 vs stopAnimation/startAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725353/
我正在尝试学习如何在 objc 中使用 UIViewPropertyAnimator。我用一个名为“blueBox”的对象制作了一个简单的测试应用程序。我想改变 blueBox 的属性。 我在@imp
我正在开发一个使用动画的应用程序。为了给我的图像添加动画效果,我使用了一些 NSArray : @property (retain) NSArray * imagePig1; 当我第一次打开UIVie
这个问题在这里已经有了答案: Cocoa animationImages finish detection (3 个答案) 关闭 7 年前。 我希望在单击按钮时运行一个简单的图像数组动画。下面的代码
我有一个带有两个 ImageView 的框架布局。一个在另一个之上。 我想默认隐藏第二个 ImageView,并在用户双击帖子时将其显示在第一个 ImageView 的顶部,动画持续 1000
我正在尝试为 TableView 单元格中的一系列图标图像设置动画,但无法让 ImageView.StartAnimating 工作。 TableView 位于 UITableViewControll
我有一个动画由于某种原因没有动画。 - (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navig
我在 blah.startAnimation(anim) 上收到 NullPointerException,它位于 LongClickListener 内。我想要做的是在 DragListener 的
我有一个 21 帧的菜单背景动画。我在 View 的 viewDidLoad 方法中使用以下代码将它们加载到内存中。 NSMutableArray *menuanimationImages = [[N
我正在尝试通过使图像按钮在单击时 Swing 来为它们设置动画。 @Override public void onClick(View v) { switch (v.getId())
我无法解决的问题是,当我执行时,我的 View 中的 UIActivityIndicatorView 不会开始动画 [UIActivityIndicatorView startAnimating]
我尝试搜索,但没有找到任何线索。我还依赖于放下一个按钮,当我尝试在该按钮的功能中设置事件指示器的动画时,它正在设置动画。 只要我在按钮的方法中编写代码,事件指示器讲解器就会工作。 请提出改进建议
时不时来这里几个月后,终于轮到我提交问题了: 我有一个带有自定义 ArrayAdapter 的 ListView,它从 Internet 加载图像(每行一个图像)。我制作了一个 ImageCache
我创建了一个自定义 View ,它使用一个虚拟的 TranslateAnimation 来设置一些布局属性。我使用 Interpolator 计算高度,并将其应用于 TranslateAnimatio
我基本上想将 View 从一个位置移动到另一个位置,而且我还想逐渐增加它的高度,那么我应该使用 setAnimation 还是 startAnimation。 TranslateAnimation t
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) findViewById() returns nul
我想在调用 segue 之前启动等待动画/显示 UIAlertView,以便用户知道他们必须等待几秒钟,同时处理 segue 并且下一个 ViewController 会填充相关数据并显示! 问题是
我已经使用 将放大动画应用到我的 Imageview myImageView.startAnimation(AnimationUtils.loadAnimation(this,R.anim.zoom_
我正在 Controller.ViewDidLoad 中创建 UIActivityIndicatorView UIActivityIndicatorView spinner = new UIAct
首先声明,以下内容均基于cocos2d-x-2.1.4。 在cocos2d-x的HelloCpp工程中,可以看到在void AppDelegate::applicationDidEnterBackgr
我有一个 UIImageView 扩展,其中包含下载设置图像的方法,该扩展还包含一个 UIActivityIndicatorView,我在加载图像之前将其设置为 View 图像已加载,我从 UII
我是一名优秀的程序员,十分优秀!