cocos2d Equivalent zu CATransformLayer gesucht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • cocos2d Equivalent zu CATransformLayer gesucht

    Hallo!

    Nachdem ich desöfteren mal reingeschaut habe um mir den einen oder anderen Denkanstoß zu holen, muss ich diesmal doch nachfragen.

    Eines meiner Projekte macht es erforderlich von einer View-basierten App auf Cocos2d umzusteigen. Dabei tut sich mir gerade eine Problem auf dessen Lösung wahrscheinlich so lächerlich einfach ist, dass ich mich schon gar nicht mehr traue zu fragen.

    Beispiel:
    Ich habe eine Spielkarte. Diese besteht aus zwei CALayer (Vorder- und Rückseite). Diese beiden CALayer sind einem CATransformLayer zugeordnet. Bei einer 180 Grad Rotation sehe ich statt der Vorderseite die Rückseite. So soll es halt auch sein.

    Das Problem:
    Bei der Portierung nach cocos2d stellt sich mir gerade das Problem in den Weg, dass ich keinen "Container" finde wie den CATransformLayer. Ich habe ein CCMenuItem mit einer Vorderseite. Lass ich dieses nun um die Z-Achse rotieren sehe ich wieder die Vorderseite, nur Spiegelverkehrt. So weit so gut. Wenn ich dem CCMenuItem ein Sprite per "addChild" zuordne, liegt dieses erstmal auf der Grafik des CCMenuItems - zum testen auch gut (Die Z-Position kann ja geändert werden).
    Wenn ich das Ganze nun rotieren lasse passiert etwas recht seltsames: Das hinzugefügte Sprite liegt nach einer 180 Grad Z-Achsen-Rotation wieder oben auf der CCMenuItem-Grafik! Auch das Ändern des Z-Index hat nichts daran geändert. So wie ich die einzelnen Objekte angeordnet habe, kommen sie am Ende wieder raus - nur Spiegelverkehrt.

    Ich benötige dafür eine Lösung. Einen Container, einen Schlag auf den Hinterkopf oder ähnliches. Etwas Code liegt bei fürs bessere Verständnis:

    Quellcode

    1. // erstellung eines Buttons mit einem Image als Grafik
    2. button_1 = [CCMenuItemImage itemFromNormalImage:@"ButtonFront.png" selectedImage:@"ButtonFront.png" target:self selector:@selector(pressTheButton:)];
    3. button_1.position = ccp(90, 260);
    4. // Menü zum Aufnehmen des Buttons
    5. CCMenu *mainButtons = [CCMenu menuWithItems:button_1, nil];
    6. mainButtons.position = CGPointZero;
    7. [self addChild:mainButtons];
    8. // Sprite für die Rückseite
    9. CCSprite *back_1 = [CCSprite spriteWithFile:@"ButtonBack.png"];
    10. [button_1 addChild:back_1 z:-1.0];
    11. // Rotation um die Z-Achse
    12. id rotat2 = [CCOrbitCamera actionWithDuration:5.5 radius:1 deltaRadius:0 angleZ:0.0 deltaAngleZ:180.0 angleX:0.0 deltaAngleX:0.0];
    13. [button_1 runAction:rotat2];
    Alles anzeigen


    Any Hilfe wäre super, Wenn Fragen sind dann bitte fragen! Grüße,


    Tomte
  • Ich glaube Du verwechselst da was, eine Rotation um die Z-Achse zeigt dir nicht die Rückseite eines Elements sondern immer noch die Vorderseite.
    Im Prinzip, wie die Zeiger einer Uhr, dir rotieren auch auf der Z-Achse.
    Was Du wahrscheinlich meinst ist eine Rotation um die X oder Y-Achse, wenn du das machst (180 Grad) siehst du die Rückseite.
    Cocos2D ist doch glaub ich (habs mir noch nie angeschaut) ne reine 2D-Geschichte, folglich kann es da eigentlich nur eine Rotation um x oder y geben, da dir die 3. Dimension (Z) ja völlig fehlt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wolf_10de ()

  • wolf_10de schrieb:

    Cocos2D ist doch glaub ich (habs mir noch nie angeschaut) ne reine 2D-Geschichte, folglich kann es da eigentlich nur eine Rotation um x oder y geben, da dir die 3. Dimension (Z) ja völlig fehlt.


    Hm jetzt widersprichst du dir gerade selber :)

    In 2D gibt es nur eine Rotation um die Z-Achse nicht um die X und Y, oder verstehe ich da jetzt was falsch ?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    wolf_10de schrieb:

    Cocos2D ist doch glaub ich (habs mir noch nie angeschaut) ne reine 2D-Geschichte, folglich kann es da eigentlich nur eine Rotation um x oder y geben, da dir die 3. Dimension (Z) ja völlig fehlt.


    Hm jetzt widersprichst du dir gerade selber :)

    In 2D gibt es nur eine Rotation um die Z-Achse nicht um die X und Y, oder verstehe ich da jetzt was falsch ?

    Gruß

    Claus

    Stimmt natürlich ;-). Was ich sagen wollte ist, es gibt in 2D nur die Rotation um die Z-Achse
  • Ist vielleicht etwas kleinlich, aber: Das Gebilde, um das man in einem n-dimensionalen Raum dreht, ist immer (n-2)-dimensional. Sprich: Im 2D-Raum dreht man um einen Punkt (0 Dimensionen). Ich habe mir gedanklich angewöhnt, nicht um etwas zu drehen, sondern in einer Ebene. Das geht immer.

    Ich hatte mal ein Projekt, in dem es um Drehungen in höherdimensionalen Räumen ging. Im 15D-Raum ist Drehen um etwas mit 13 Dimensionen nicht so einfach vorstellbar. Mit dem Ebenengedanken wird's wieder einfacher.
    Multigrad - 360°-Produktfotografie für den Mac
  • Stimmt, es ist die Y-Achse, sorry. Cocos2d ist zwar auf 2d ausgelegt, beherrscht aber auch 3d darstellung dank open gl es. Und da es tatsächlich eine Rotation ist wird mir, wenn ich das Bild nicht austausche, tatsächlich das Originalbild wieder gezeigt. Ich habe allerdings festgestellt das es einen Unterschied macht ob ich ein CCMenuItem drehe, oder ein CCSprite. Ich habs jetzt nicht vor mir, aber ich bilde mir ein, dass eines der Beiden die vermeintliche Rückseite spiegelverkehrt angezeigt hat. Aber wie gesagt, ist halt erledigt mit dem Austauschen des Bildes.
  • mattik schrieb:

    Ist vielleicht etwas kleinlich, aber: Das Gebilde, um das man in einem n-dimensionalen Raum dreht, ist immer (n-2)-dimensional. Sprich: Im 2D-Raum dreht man um einen Punkt (0 Dimensionen). Ich habe mir gedanklich angewöhnt, nicht um etwas zu drehen, sondern in einer Ebene. Das geht immer.

    Naja, bei jemand, der mit Drehungen sein Brot verdient, sehen wir das nach. +scnr+ ;)

    Eine Visualisierung eine Körperdrehung im 15D-Raum würde mich echt mal interessieren...
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Naja, bei jemand, der mit Drehungen sein Brot verdient, sehen wir das nach. +scnr+

    Eine Visualisierung eine Körperdrehung im 15D-Raum würde mich echt mal interessieren...

    Stimmt ja, bei der Arbeit bin ich ganz schön am rotieren. Drehungen im Hyperraum sehen in der Projektion nicht so spektakulär aus wie man denkt, ich suche mal das Programm raus - ist schon uralt, vielleicht bekomme ich es ja trotzdem noch kompiliert. Kann ich bei Gelegenheit mal zeigen. Apropos: Sollte man es wagen, demnächst mal wieder zu einem OSX-Entwicklerbier in Köln einzuladen? Bei dem Wetter wäre das nicht das Schlimmste, was ich mir vorstellen kann.
    Multigrad - 360°-Produktfotografie für den Mac
  • mattik schrieb:

    macmoonshine schrieb:

    Naja, bei jemand, der mit Drehungen sein Brot verdient, sehen wir das nach. +scnr+

    Eine Visualisierung eine Körperdrehung im 15D-Raum würde mich echt mal interessieren...

    Stimmt ja, bei der Arbeit bin ich ganz schön am rotieren. Drehungen im Hyperraum sehen in der Projektion nicht so spektakulär aus wie man denkt, ich suche mal das Programm raus - ist schon uralt, vielleicht bekomme ich es ja trotzdem noch kompiliert. Kann ich bei Gelegenheit mal zeigen. Apropos: Sollte man es wagen, demnächst mal wieder zu einem OSX-Entwicklerbier in Köln einzuladen? Bei dem Wetter wäre das nicht das Schlimmste, was ich mir vorstellen kann.

    Ja, das Wetter ist zwar schon eine große Bürde, aber in der Not... ;) Steht doch schon seit Januar oder so aus :)
    „Meine Komplikation hatte eine Komplikation.“