java - 将带有自定义参数的 Java 构造函数转换为 Objective-C 代码

标签 java ios objective-c variables constructor

我正在将 OpenGL java 应用程序转换为 Objective-C。这是来自名为 AmbientMovement 的文件中我的 java 构造函数的构造函数的副本:

public class AmbientMovement {

private final float         FPS;

private final Frame[]               FRAMES;
private final int           NUMBER_FRAMES;
private final float         CYCLE;
private final Random            RANDOM;
private int             indexAmbient;
private float               timeAmbient;
private float               timeCurrent;

public AmbientMovement(Frame[] frames, float fps) {

    this.FPS              = fps;

    this.FRAMES           = frames;
    this.NUMBER_FRAMES    = frames.length;

    Frame lastframe       = frames[this.NUMBER_FRAMES - 1];
    this.CYCLE            = lastframe.getTime() + lastframe.getDuration();
    this.RANDOM           = new Random();

    this.resetClock();
}

这是我尝试使用 iOS 6 和 X-Code 4.5 的 Objective-c 编写代码:

环境运动.h

    #import "VA-Frame.h"
    #import "VA-TRSet.h"
    #import "VA-Morph.h"
    #import "VA-Quaternion.h" 
    #import "math.h"

    @interface VA_AmbientMovement : NSObject{

    /* Private members */
    @private {
        @property float const*  FPS;
        @property int const*    NUMBER_FRAMES;
        @property float const*  CYCLE;
        @property int           indexAmbient;
        @property float         timeAmbient;
        @property float         timeCurrent;
    }

}

环境运动.m

#import "VA_AmbientMovement.h"

@implementation VA_AmbientMovement

/* Initialise the AmbientMovement constructor */
-(id)initAmbientMovement:(Frame[])frames AndFPS :(float)fps{
    self=[super init];
    if(self){
        FPS                 = 0;
        NUMBER_FRAMES       = 0;
        CYCLE               = 0;
        indexAmbient        = 0;
        timeAmbient         = 0;
        timeCurrent         = 0;

        Frame* frame = [[Frame alloc]      initAmbientManager:frames AndFPS:fps];
        TRSet* trset = [[TRSet alloc]      initAmbientManager:frames AndFPS:fps];
        Morph* morph = [[Morph alloc]      initAmbientManager:frames AndFPS:fps];
        Quaternion* quat   = [[Quaternion alloc]    initAmbientManager:frames AndFPS:fps];
    }
    return self;
};

-(id)init{
    return [self initAmbientMovement:0 AndFPS: 0];
};

我最困惑的事情之一是如何传递类类型的参数。在 Java 中,这是通过“Frame[] frames”完成的。我可以在 objective-c 中使用以下行“(Frame[])aframes”执行此操作还是我犯了一个错误?

非常感谢

最佳答案

你所拥有的可以正常工作——但通常在 objective-c 中传递数组时,你会想要使用 NSArrayNSMutableArray 而不是 c -样式数组。

关于java - 将带有自定义参数的 Java 构造函数转换为 Objective-C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14447826/

相关文章:

Java 方法调用/行静态

java - 使用 TimeZone 和 SimpleDateFormat 进行日期解析/格式化会在 DST 开关周围产生不同的结果

ios - 在设备上调试 iOS/AIR 内容

ios - 使用 identifierForVendor 会拒绝我的应用程序吗?

iOS - XML pretty-print

java - 如何使用打印机的字体直接从java使用行式打印机进行打印?

ios - isEqualToString : when setting text of a label 无法识别的选择器错误

ios - 自定义单元格内对象的选择器

ios - 为什么不使用 UIPickerView 调用属性TitleForRow?

java - iText PDF 错误字符转换