【问题标题】:Cocos2D - Large ImageCocos2D - 大图
【发布时间】:2012-02-12 16:52:38
【问题描述】:

Cocos2D 中是否可以使用大图,并允许用户通过滑动或捏合的方式进行放大和缩小?

我从this 帖子中看到,Cocos2D 图像的最大分辨率为 2048x2048。这显然比设备视口大,所以我希望用户能够在图像周围移动。

我不是在创建游戏,而是在制作一种交互式生物细胞,它允许用户点击任意细胞器,并查看有关它们的信息弹出窗口。

这是图像的概念,显然不可能将整个图像塞进设备视口:

所以说真的,在我深入研究这个项目之前,我只是想知道是否可以使用大图像,让用户能够任意移动它,如果我能检测到细胞器接触,也许是通过 CCSprites?

【问题讨论】:

  • 为什么不尝试使用您的大图像创建精灵?
  • @Andrew:这是去这里的路吗?我以前从未使用过这个库,现在更多的是在做初步研究。

标签: cocos2d-iphone cocos2d-android


【解决方案1】:

我建议继承 CCSprite 并使用您的大图像作为类的图像。 CCSprites 当然可以通过简单地将基本的 CCTouchDispatcher 委托添加到 sprite 的类来检测触摸:

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-1 swallowsTouches:YES];

然后也将此方法添加到您的 CCSprite 子类中:

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event

此时,您可以通过触摸、滚动或任何适合您需要的方式做任何您想做的事情。

您可以将您的图像分解为多个精灵并使用 CCLayer 来管理触摸,这仅取决于您是否真的需要图像那么大,或者单个图像的限制是否足以让您一起工作,考虑到它们也很大。我这里的方法远没有那么复杂。

【讨论】:

    【解决方案2】:

    最大纹理大小受 OpenGL ES 的限制,而不仅仅是 coscos2d,它会因设备而异。但是,您可以将图像加载到多个纹理中,然后在屏幕上定位和移动这些纹理。所以实际上你可以拥有任何你想要的大小的图像外观,但你必须以编程方式管理图像的不同精灵(图块)。

    CCSptites 不检测触摸。 CCLayers 将获取触摸事件,然后您可以进行命中测试以查看它是否命中给定的 CCSprite。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多