Ios 如何在UIImageView上创建偏移

Ios 如何在UIImageView上创建偏移,ios,methods,uiimageview,correlated,Ios,Methods,Uiimageview,Correlated,我最近在这里发布了一个问题 这几乎是说,由于缺乏算法,我得到的是一条“醉酒行走”隧道,而不是一条相关的隧道 答案在一定程度上适用于我试图创建的内容,但我不知道如何为我的游戏正确地实现算法 我相信第一步是为成对的墙创建偏移。我希望屏幕两侧出现的图像(名为:“Left1”和“Right1”、“Left2”和“Right2”…“Left41”和Right41”)彼此“重新生成”稍微向左或向右偏移,以便在外观上创建隧道的错觉。我试图使用回答中提供给我的代码为我的一组墙创建偏移,但在尝试构建时很少出错。

我最近在这里发布了一个问题

这几乎是说,由于缺乏算法,我得到的是一条“醉酒行走”隧道,而不是一条相关的隧道

答案在一定程度上适用于我试图创建的内容,但我不知道如何为我的游戏正确地实现算法

我相信第一步是为成对的墙创建偏移。我希望屏幕两侧出现的图像(名为:“Left1”和“Right1”、“Left2”和“Right2”…“Left41”和Right41”)彼此“重新生成”稍微向左或向右偏移,以便在外观上创建隧道的错觉。我试图使用回答中提供给我的代码为我的一组墙创建偏移,但在尝试构建时很少出错。它首先告诉我,“Left1”的局部声明隐藏了实例变量,我认为这是因为它已经在我的函数中声明为变量了?这件事提了两次。。除此之外,我还有一个错误,即从不兼容的类型“float”分配给“UIImageView*\uu strong”。我怎样才能修好这些?还是我在别的地方做错了什么

由于语义问题,我不知道如何重新排列,所以我对这部分有点迷茫

我可以回答有关该计划的任何问题,以便于评估情况

-(void) TunnelMovement{

    CGFloat Left1 = 14;
    for( int i = 0; i < 41; i++ ){
        CGFloat offset = (CGFloat)arc4random_uniform(2*100) - 100;
        Left1 += offset;
        Right1 = Left1 + 14;
        //...
    }
}
-(无效)隧道移动{
CG1=14;
对于(int i=0;i<41;i++){
CGFloat偏移=(CGFloat)arc4random_均匀(2*100)-100;
Left1+=偏移量;
右1=左1+14;
//...
}
}

这就是我在试图填补答案中的空白后,代码中的内容。不知道我是否把所有的必需品都放进去了。谢谢。

[我可以快速更正错误消息,但您正在尝试跑步,甚至无法行走,几乎无法爬行。 Stack Overflow是一个编程论坛,但它不是学习或教授编程的地方,人们将没有耐心教授基础知识。]

如果一件东西是完全不同的东西,你就不能把它的价值分配给另一件。行中:

Right1 = Left1 + 14;
Right1是UIImageView,Left1是CGFloat,它们是完全不同的东西。Left1只是一个简单的数字,Right1是一个复杂的对象

您正在尝试定位UIImageView,因此需要将Left1+14的值指定给UIImageView的一部分,该部分将定位UIImageView,同时也是一个CGFloat

因此需要将其指定给边界、帧或中心的x值,例如

Right1.center.x = Left1 + 14;
警告是因为您有两个同名的不同对象,UIImageView名为Left1,但是您有一个CGFloat也名为Left1,您不应该给两个不同的对象赋予相同的名称-CGFloat Left1隐藏了UIImageView名为Left1。你应该把它叫做Left1X或LeftWallX或类似的名字,就像你在回答另一个问题时一样

这只是一个错误和警告,你可能还没有准备好去研究如何画迷宫的语义,如果你用这两个词来搭配的话。特别是,您至少需要知道边界、帧、中心、x、y、CGPoint、CGRect和CGSize都是什么,以便完全了解要更改的值以及更改这些值对UIImageView位置的影响

----编辑---对象编程101

当你有一个像UIImageView这样的对象时,它就像一座房子,房子可以有一个名字,里面有很多房间,每个房间都有一个名字,每个房间里都有很多东西。你正在尝试用一台新电视替换一个房间里的旧电视

所以Right1就像一座房子

右1.中心就像房子里的一个房间

右1.中心.x就像一个叫中心的房间里的电视机,在一个叫右1的房子里

Right1 = Left1 + 14;
这就好比用一台新电视机换一所房子,而不是用一间屋子里的电视机


这个类比太愚蠢了吗?

正如(在你被删除的帖子中)已经告诉你的,“从不兼容的“float”类型分配给“UIImageView*\uu strong”,是因为将float类型的变量分配给UIImageView类型的变量。由于您在几天后无法解决这个小的单行错误消息,这只能意味着您根本没有编程经验。请允许我建议您在继续之前花点时间阅读一些关于编程基础知识的基本教程,否则您将继续不理解和/或应用提供给您的任何答案,除非Spoonfed,但请随时发布显示错误的代码行,我将很乐意更正它(这可能是右上方的最后一行-因此您也需要在这之前发布代码,其中包括声明或Right1)错误来自Right1=Left1+14;其他两个黄色警告来自该行和它上面的行。在此之前,您需要显示代码,您必须在代码前面声明Right1为UIImageView,此处未显示。是的,我已将其声明为IBOutlet UIImageViewOK,因此我更改了该特定me中的Left1我现在得到的唯一一个红色错误是“使用未声明的标识符'Right1X'。因为我现在有这个-(void)TunnelMovement{CGFloat Left1X=14;for(int i=0;i<41;i++){CGFloat offset=(CGFloat)arc4random_uniform(2*100)-100;Left1X+=偏移;righ1x.center.x=Left1X+14;//…}但是你解释得很好。除了这里和随机的youtube视频之外,我知道没有很多地方可以学习xcode。有很多很棒的书。但是你需要学习的不是客观的C语言,而是一般的编程。亚马逊上有一些书教你为有n语言的人开发iOS