Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 交互式图像_Iphone - Fatal编程技术网

Iphone 交互式图像

Iphone 交互式图像,iphone,Iphone,这个社区在很多方面都给了我巨大的帮助。 第一次问我这个问题,很简单。我正在通过iPhone SDK学习曲线,速度很快。。。但偶尔,我会遇到一个问题,尽管它很简单,但更容易提出问题并做其他事情,然后再花一个小时阅读 我有一个2D游戏,在这个游戏中,一辆汽车在表面上旋转,面向行驶方向。我已经确定核心动画是我最好的方法。 车辆是一个图像。它与用户输入触摸交互 我走对了吗? UIView作为响应程序,包含包含文件中图像的CALayer树。 当前文件是GIF文件。这使得它很容易使框架透明,只留下车辆图像

这个社区在很多方面都给了我巨大的帮助。 第一次问我这个问题,很简单。我正在通过iPhone SDK学习曲线,速度很快。。。但偶尔,我会遇到一个问题,尽管它很简单,但更容易提出问题并做其他事情,然后再花一个小时阅读

我有一个2D游戏,在这个游戏中,一辆汽车在表面上旋转,面向行驶方向。我已经确定核心动画是我最好的方法。 车辆是一个图像。它与用户输入触摸交互

我走对了吗? UIView作为响应程序,包含包含文件中图像的CALayer树。 当前文件是GIF文件。这使得它很容易使框架透明,只留下车辆图像

在UIView子类中,如何将gif图像加载到图层中

听起来很简单,所以我想


干杯。

有什么原因不能简单地将UIImageView子类化来处理触摸方法?在我看来,用您的图像实例化图像视图,并使用重写的UIResponder方法处理车辆移动的位置以及您需要的任何其他内容,都比手动管理CALayer树容易得多

您可以使用以下方法来完成此操作:

UIImage *vehicleImage = [UIImage imageNamed:@"vehicle.gif"];
VehicleImageView *vehicleView = [[[VehicleImageView alloc]
                                  initWithImage:vehicleImage] autorelease];
然后让VehicleImageView子类UIImageView:

@interface VehicleImageView : UIImageView
// Your stuff
@end

@implementation VehicleImageView
// Your stuff

// UIResponder methods
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    // Custom implementation
}

// Other touch methods...
@end
不过,您的做法似乎是正确的,因为您确实需要在车辆视图/视图层次结构中的某个位置为触摸方法提供UIResponder

更多信息:

具体来说,使用图像: 具体名称: 特别是触碰:触碰事件:
使用核心动画,您走在了正确的轨道上。CAKeyFrameAnimation具有一个将广泛使用的路径属性。以下未测试的示例代码使用直线路径,但也可以使用曲线路径:

UIImage *carImage = [UIImage imageNamed:@"car.png"];
carView = [[UIImageView alloc] initWithImage:carImage];

[mapView addSubview:carView];

CAKeyframeAnimation *carAnimation = [CAKeyframeAnimation 
    animationWithKeyPath:@"position"];

carAnimation.duration = 5.0;

// keep the car at a constant velocity
carAnimation.calculationMode = kCAAnimationPaced;

// Rotate car relative to path
carAnimation.rotationMode = kCAAnimationRotateAuto;

// Keep the final animation
carAnimation.fillMode = kCAFillModeForwards;
carAnimation.removedOnCompletion = NO;

CGMutablePathRef carPath = CGPathCreateMutable();
CGPathMoveToPoint(carPath, NULL, 0.0, 0.0);

CGPathAddLineToPoint(carPath, NULL, 100.0, 100.0);
CGPathAddLineToPoint(carPath, NULL, 100.0, 200.0);
CGPathAddLineToPoint(carPath, NULL, 200.0, 100.0);

carAnimation.path = carPath;
CGPathRelease(carPath);

[carView.layer addAnimation:carAnimation forKey:@"carAnimation"];

我研究了如何简单地使用UIImageView,并对其局限性进行了假设。对我来说,CA的需求来自于这一要求:车辆在牵引其他车辆(如火车)的同时从一个CG点行驶到另一个CG点。当到达一个航路点时,它不能简单地转向并指向下一个。。。它需要计算一个圆弧来跟踪,直到它的方位与下一个航路点对齐。。。它要去的地方。这可确保拖车不会顶起刀具。我不知道你的观点是否能迎合这种类型的动议。这就是我研究CA/cgapi.Hm的原因。你也许可以看看iPhone上可用的Quartz 2D Bezier曲线功能,但你是对的-我不确定UIViews是否支持这种转换,因为我对核心动画或Quartz不太精通。我相信你可以自己做计算,只需对视图的可设置动画的属性设置动画更改,但查看核心动画/图形API可能不会那么麻烦。这当然有帮助,而且测试正常。这也给了我一个阅读QuartzCore的小方向。谢谢你的帮助!