如何为文字游戏编写可拖动图块?

Posted

技术标签:

【中文标题】如何为文字游戏编写可拖动图块?【英文标题】:How to program draggable tiles for a word game? 【发布时间】:2013-11-26 05:05:03 【问题描述】:

我是一名 ios 编程新手(同时阅读几本关于该主题的书籍),我想开发一个(又一个)文字游戏。

来自 Flash/Flex 编程背景,我最初期望图块最好捆绑为 gif 或 png 资源。

但后来我查看了(通过使用 iFunbox)流行的文字游戏(Lexulous、Wordament、Words with Friends、Ruzzle 等),没有一个这样做:

这是我看过的许多应用程序中没有一个包含任何作为图像的字母。

所以我的问题是为文字游戏创建字母拼贴的推荐方法是什么(在 Xcode 5 中,没有额外的 SDK,如 Cocos2d 或 Sparrow)?

在我想要的瓷砖上

居中对齐的字母(显然!), 然后在角落里显示字母值的索引 然后是总单词值的另一个索引

当触摸时,我想让图块变大一点,并在它下面添加一个阴影。

我的 tile 类应该是 UIView(它们可以被拖动、增长并有阴影吗?)

我应该为磁贴使用 .nib 文件吗?

对于拖动,我已经找到了一个很好的建议:Dragging an UIView inside UIScrollView

但我在这里真正想知道的是:UIView 是否会成为一个好的图块(性能和功能方面),还是我应该选择另一个基类(比如某些形状)?

【问题讨论】:

UIView 将是一个很好的容器 - 也可以考虑 UIControl,因为它提供了一些额外的触摸处理机会(beginTracking、continueTracking、isTracking 等)以及添加目标操作事件的能力 UIControl 也很好,因为您可以将这些视图添加到 xib 并设置它们的类。然后,如果需要,您可以从 xib 中的该视图设置 IBActions(touchupinside、dragoutside 等)。在某些情况下非常方便。 【参考方案1】:

是的 UIView 将是一个很好的容器。 创建 UIView 的子类,比如 TileView,放入一些标签、图像视图和一个按钮,覆盖按钮 UIControlEventTouchDown、UIControlEventTouchUpInside、UIControlEventTouchDragInside 事件以帮助 U 在其父视图中导航。将 TileView 放在某个容器中(您的视图控制器视图或 U 想要的位置),基本上就是这样。

-(void)btnPressed:(id)sender withEvent:(UIEvent *) event

    CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
    dx = 0;
    dy = 0;

    oldPoint = point;


-(void)btnRelesed:(id)sender

// stop moving code


-(void)btnDragged:(id)sender withEvent:(UIEvent *)event

    CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];

    dx = point.x - oldPoint.x;
    dy = point.y - oldPoint.y;

    oldPoint = point;

    // set tile view center position using 
    CGPoint ptCenter;
    ptCenter = self.view.center;
    ptCenter.x = ptCenter.x + dx;
    ptCenter.y = ptCenter.y + dy;
    self.view.center = ptCenter;

self.view 是你的 TileView 和它的 self.view 因为你有 ovrriden UIView 类;)

【讨论】:

谢谢,所以我需要一个半透明的按钮来处理拖动? 这是一种方法,是的。你做这样的事情:

以上是关于如何为文字游戏编写可拖动图块?的主要内容,如果未能解决你的问题,请参考以下文章

如何为能量补充游戏编写计时器算法

Flutter:如何为 Draggable 小部件设置边界?

如何为多个客户端编写java TCP对象传输

如何为bat文件产生log文件?

游戏级别从XNA中的文件读取

如何为 JavaFX 编写 KeyListener