2012-10-14 25 views
11

Cocos2d'nin bir Rubymotion uygulaması olan cocosmotion ile deneme yapıyorum. Çalıştığım derste, bir yapıyı argüman olarak alan bir metodum var. Rubymotion ve MacRuby belgelerine danıştım, ancak ihtiyacım olan yapıya dayanarak yeni bir nesneyi nasıl oluşturacağımı anlayamıyorum. Bence asıl mesele, yapının küçük harfle başlaması ve Ruby ile çalışmayı denediğimde yerel bir değişken olduğunu düşünüyor. https://github.com/MacRuby/MacRuby/issues/121Yapılar için Rubymotion ve İşaretçiler

bir çözüm veya çözüm var mı: Burada belirtildiği gibi

ben de aynı sorun var inan?

yapı şöyle Objective-C tanımlanır:

typedef struct _ccTexParams { 
     GLuint minFilter; 
     GLuint magFilter; 
     GLuint wrapS; 
     GLuint wrapT; 
} ccTexParams; 

Aramaya çalışıyorum yöntem ccTexParams yapı bekliyor. İşte

denedim budur:

  @mysprite = Pointer.new("{ccTexParams= 
      {GLUint=GL_LINEAR_MIPMAP_LINEAR} 
      {GLUint=GL_LINEAR} 
      {GLUint=GL_CLAMP_TO_EDGE} 
      {GLUint=GL_CLAMP_TO_EDGE}}", 4) 

ben bu şekilde çalıştığınızda:

 @mysprite = Pointer.new(:object, 4) 

     @mysprite[0] = GL_LINEAR_MIPMAP_LINEAR 
     @mysprite[1] = GL_LINEAR 
     @mysprite[2] = GL_CLAMP_TO_EDGE 
     @mysprite[3] = GL_CLAMP_TO_EDGE 

çalışma zamanı hatasıdır:

expected instance of Pointer of type `{_ccTexParams=IIII}', got `@' (TypeError) 

Ben de denedim:

@mysprite = Pointer.new("_ccTexParams", 4) 

     @mysprite[0] = GL_LINEAR_MIPMAP_LINEAR 
     @mysprite[1] = GL_LINEAR 
     @mysprite[2] = GL_CLAMP_TO_EDGE 
     @mysprite[3] = GL_CLAMP_TO_EDGE 

hatası:

Can't find pointer description for type `_ccTexParams' 

Ben de farklı şekillerde bir grup içinde CcTexParams, _ccTexParams ve sadece ccTexParams olarak değiştirmeye çalıştık, bundan hiç versiyonları çalışır.

bu çalıştı:

@mysprite = CcTexParams.new 
@mysprite.minFilter = GL_LINEAR_MIPMAP_LINEAR 
@mysprite.magFilter = GL_LINEAR 
@mysprite.wrapS = GL_CLAMP_TO_EDGE 
@mysprite.wrapT = GL_CLAMP_TO_EDGE 

rubymotion Sadece yöntemine doğrudan [GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE] geçen çalıştı o expected an instance of Pointer, got '#<CcTexParams minFilter=9987 magFilter=9729 wrapS=33071 wrapT=33071>' (CcTexParams) (TypeError)

şikayet ediyor. Bu expected a Pointer but got an Array şikayet ediyor.

Belki de ccTexParams dosyasını lib olarak CCTexParams gibi bir şeye yeniden adlandırmalıyım? Sanırım bu ideal bir çözüm değil.

+0

Önerilerimin içeriğini sorgunuza taşıdım ve yanıtımı sildim. Umarım bu, sorunuz olmadığı için sorunuzu daha görünür hale getirir. – vacawama

+0

Yardımlarınız için teşekkürler @vacawama. – plasticbugs

cevap

2

Birisi bunun için bir çözüm arıyorsa, Joybox'u deneyin. Cocos2D için bir paket.

Joybox combines the most popular and widely used 2D game engine for iOS, Cocos2D, folds in the amazing Box2D physics engine, and then wraps them up into a clean Ruby API that will make game development faster and more enjoyable for both beginners and experts alike.