0

我正在开发一个横向滚动的 iPhone 应用程序,我拥有所有资源,除了实际的横向滚动部分!如何制作一个可以横向滚动的应用程序?更具体地说,我希望应用程序的视图在 UIImageview(player) 碰到屏幕的右/左边框时滚动。

<:EDIT:>
我对所有这些混乱感到非常抱歉!我所做的只是一个仅用于模拟器的 SAMPLE iPhone 应用程序。在应用程序中,我有一个 UIImaageview,当您触摸箭头 UIImageviews 时它会移动。请注意,在这句话之前所说的所有信息都完美无缺!现在,我的问题是我希望 UIView 只滚动一张图片(这意味着它不会永远消失;))。我曾尝试使用 UIScrollView,但没有奏效。最后,除了基本的 UIview,我不打算使用 Cocos2D 或任何其他游戏引擎。这只是一个测试应用程序,而不是一场编码盛宴……

4

7 回答 7

3

如果您正在编写游戏,您可能会受益于Cocos2D等引擎提供的许多功能。

于 2009-12-20T18:01:29.287 回答
2

从基于视图的应用程序模板开始,以便您了解其工作原理。稍后您可以与现有代码集成。

创建一个 320 x 960 像素的无缝背景图像,命名为“seamless.png”

将此 ivar 添加到您的视图控制器 .h 文件

UIImageView *bg;

@property (nonatomic, retain) UIImageView *bg;

在您的 .m 文件中,在 @implementation 行之前添加这些 #defines,在之后添加 @synthesize。

#define kUpdateRate (1.0 / 60.0)
#define kMoveY (3.0)
#define kTopY (0.0)
#define kBottomY (480.0)
@synthesize bg;

添加此方法。

-(void)scrollView; {
 float oldY = self.bg.center.y + kMoveY;
 float newY = oldY;

 if (oldY > kBottomY) {
  newY = kTopY;
  }

 self.bg.center = CGPointMake(self.bg.center.x, newY);
}

将此添加到您的 viewDidLoad 方法中。

 self.bg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"endless.png"]];
 [self.view addSubview:self.bg];
 self.bg.center = CGPointMake(self.bg.center.x, kTopY);

 [NSTimer scheduledTimerWithTimeInterval:kUpdateRate target:self selector:@selector(scrollView) userInfo:nil repeats:YES];

当你运行应用程序时,你应该有一个漂亮的滚动背景。

总结一下会发生什么:设置了一个定时器来重复调用scrollView:

在那里,图像向下移动直到它到达一个预定义的点 (kBottomY),此时它的位置又跳回到顶部 (kTopY) 并重新开始。

您可以将其自定义为仅在需要时滚动或自行滚动,对吗?

于 2009-12-21T08:08:05.573 回答
2

如果横向滚动的图像很大,我建议在利用 CATiledLayer 的同时滚动视图。请参阅 WWDC10 Session 104 视频和“平铺”示例代码。

顺便说一句,Apple 文档中似乎没有任何内容可以预先判断实用程序或菜单中滚动视图的使用。

于 2011-05-14T22:16:06.097 回答
1

您是否尝试使用 UIScrollView?如果是这样,只需将滚动视图的内容大小设置为比屏幕更宽的值。例如:

self.scrollView.contentSize = CGSizeMake(640, 480);
于 2009-12-20T17:02:25.727 回答
1

您应该使用 UIScollView ( http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/3393-uiscrollview-tutorial.html )。还是我错过了重点?

于 2009-12-20T17:02:32.277 回答
1

只需使主视图比屏幕宽并相应地更改边界以显示主视图的不同部分。这假设您的主视图确实具有某种有限的宽度。如果这种观点永远存在,那就有点棘手了。在这种情况下,您可以更改边界并绘制新显示的内容。

如果这没有意义,那么我认为您需要改写您的问题或做一些实验来缩小您的要求。

于 2009-12-20T19:59:36.843 回答
1

看看 Cocos2D for iPhone,它还包括 2 个碰撞引擎,花栗鼠和 box2d

我还可以推荐oreilly的书iPhone游戏开发,如果你是游戏开发新手,这本书会教你如何滚动一个基本的游戏框架

于 2009-12-20T20:31:30.713 回答