为什么我不能在带有(id)引用的对象上使用zRotation?我可能错误地构建了这个问题,在这种情况下我很抱歉。
这是代码。
-(void)moveAlien:(id)alien :(CGPoint)startPos :(CGPoint)stopPos :(float) speed
{
float katetX = startPos.x - stopPos.x;
float katetY = startPos.y - stopPos.y;
//
alien.zRotation = atan(katetX/katetY); //This doesn't work
//
SKAction *moveAlien = [SKAction moveTo:stopPos duration:speed];
[alien runAction:moveAlien];
}
我做错了什么?我怎样才能使它发挥作用?
答案 0 :(得分:0)
这种情况正在发生,因为id
与NSObject*
相同。并且NSObject*
没有名为zRotation
的属性。您可能想要转换变量,例如:
((MyAlienClass *)alien).zRotation = atan(katetX/katetY);
甚至更好,让参数更具体一点:
-(void)moveAlien:(MyAlienClass *)alien :(CGPoint)startPos :(CGPoint)stopPos :(float) speed
<强> PS:强> 在objectiveC中,您通常使用函数名称描述参数,如下所示:
-(void)moveAlien:(MyAlienClass *)alien from:(CGPoint)startPos to:(CGPoint)stopPos withSpeed:(float)speed
因为这样的电话看起来会更好:
[this moveAlien:alien from:CGPointMake(0,0) to:CGPointMake(10,0) withSpeed:3.5]
比:
[this moveAlien:alien :CGPointMake(0,0) :CGPointMake(10,0) :3.5]