我正在开发一个横向滚动的iPhone应用程序,我拥有所有资源,除了实际的侧滚动部分!如何制作应用程序以使其横向滚动?更具体地说,当UIImageview(播放器)点击屏幕的右/左边框时,我希望应用程序的视图滚动。
<:EDIT产品:>
所有这些困惑都让我感到非常抱歉!我所做的只是一个SAMPLE iPhone应用程序,仅用于模拟器。在应用程序中,我有一个UIImaageview,当你触摸箭头UIImageviews时会移动。请注意,在此句子完成之前所有信息均已完成!现在,我的 问题 是我希望UIView只滚动一张图片(这意味着它不会永远存在;))。我尝试过使用UIScrollView,但是没有用。最后,除了基本的UIview之外,我不打算使用Cocos2D或任何其他游戏引擎。这只是一个测试应用程序,而不是编码狂欢......
答案 0 :(得分:3)
如果您正在编写游戏,您可能会受益于Cocos2D等引擎为您提供的许多功能。
答案 1 :(得分: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),然后重新开始。
你可以自定义它,只在你想要的时候滚动或者自己滚动,对吗?
答案 2 :(得分:2)
如果横向滚动的图像很大,我建议在利用CATiledLayer的同时滚动视图。请参阅WWDC10 Session 104视频和“Tiling”示例代码。
顺便说一下,Apple文档中没有任何内容似乎预先判断滚动视图是否适用于实用程序或菜单。答案 3 :(得分:1)
您是否尝试使用UIScrollView?如果是这样,只需将scrollView的内容大小设置为比屏幕更宽的内容。例如:
self.scrollView.contentSize = CGSizeMake(640, 480);
答案 4 :(得分:1)
您应该使用UIScollView(http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/3393-uiscrollview-tutorial.html)。或者我错过了这一点?
答案 5 :(得分:1)
只需使主视图比屏幕宽,并相应地更改边界以显示主视图的不同部分。这假设您的主视图确实具有某种有限的宽度。如果这种观点永远存在,那就有点棘手了。在这种情况下,您可以更改边界并绘制新显示的内容。
如果这没有意义,那么我认为你需要改写你的问题或做一些实验来缩小你的要求。
答案 6 :(得分:1)
看一下iPhone的Cocos2D,其中还包括2种碰撞引擎,花栗鼠和box2d
我还可以推荐oreilly书籍iPhone游戏开发,如果你是游戏开发的新手,将教你如何推出一个基本的游戏框架