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:
Alles anzeigen
Any Hilfe wäre super, Wenn Fragen sind dann bitte fragen! Grüße,
Tomte
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
- // erstellung eines Buttons mit einem Image als Grafik
- button_1 = [CCMenuItemImage itemFromNormalImage:@"ButtonFront.png" selectedImage:@"ButtonFront.png" target:self selector:@selector(pressTheButton:)];
- button_1.position = ccp(90, 260);
- // Menü zum Aufnehmen des Buttons
- CCMenu *mainButtons = [CCMenu menuWithItems:button_1, nil];
- mainButtons.position = CGPointZero;
- [self addChild:mainButtons];
- // Sprite für die Rückseite
- CCSprite *back_1 = [CCSprite spriteWithFile:@"ButtonBack.png"];
- [button_1 addChild:back_1 z:-1.0];
- // Rotation um die Z-Achse
- id rotat2 = [CCOrbitCamera actionWithDuration:5.5 radius:1 deltaRadius:0 angleZ:0.0 deltaAngleZ:180.0 angleX:0.0 deltaAngleX:0.0];
- [button_1 runAction:rotat2];
Any Hilfe wäre super, Wenn Fragen sind dann bitte fragen! Grüße,
Tomte