SKNode skaliert vom berührten Punkt

8

Ich habe UIPinchGestureRecognizer zu meiner scene.view hinzugefügt, um meinen Inhalt zu skalieren. Ich skaliere den Elternknoten, in dem sich alle sichtbaren Inhalte befinden. Aber ich habe ein Problem mit Skalierungspunkt. Die Sache ist Knoten Skala von der unteren linken Ecke. Es ist definitiv nicht das, was ich will. Muss ich viel Code schreiben, um von dem Punkt aus skalieren zu können, an dem es klemmt? Könnten Sie bitte ein paar Hinweise geben, welchen Weg Sie verfolgen sollten?

    
Mikayil Abdullayev 20.02.2014, 07:05
quelle

4 Antworten

20

Ich habe an dem gleichen Problem gearbeitet und meine Lösung wird unten gezeigt. Nicht sicher, ob es der beste Weg ist, es zu tun, aber bisher scheint es zu funktionieren. Ich verwende diesen Code, um einen SKNode mit mehreren SKSpriteNode-Kindern zu vergrößern und zu verkleinern. Die Kinder bewegen und skalieren mit dem SKNode wie gewünscht. Der Ankerpunkt für die Skalierung ist die Position der Pinch-Geste. Der übergeordnete SKScene und andere SKNodes in der Szene sind nicht betroffen. Alle Arbeiten finden während recognizer.state == UIGestureRecognizerStateChanged statt.

%Vor%

Das Folgende sind Hilfsfunktionen, die oben verwendet wurden. Sie stammen aus dem Ray Wenderlich Buch über Sprite Kit.

%Vor%     
ninefifteen 21.02.2014, 23:55
quelle
3

Ich habe die Neunfünfzehn-Lösung für Swift and Pinch Gestures übersetzt. Ich habe ein paar Tage damit verbracht, das alleine zu machen. Vielen Dank für die Obj-C-Post von Ninefifteen! Hier ist die Swift-Version, die anscheinend für mich funktioniert.

%Vor%     
Dave Strand 28.10.2016 17:10
quelle
0

Kann nicht zoomen Ich weiß nicht warum, aber das Hauptproblem sind diese SKT_INLINE. Ich habe sie gegoogelt und nichts über sie gefunden ... Das Problem ist, wenn ich sie in meinem Projekt kopiere / einfüge, sagt mir der Compiler, dass ich ein ";" direkt nach ihnen. Ich frage mich, ob das der Grund ist, dass ich zoomen kann.

    
user3033437 13.04.2015 08:54
quelle
0

In Swift 4 fügt my SKScene der Ansicht den UIPinchGestureRecognizer hinzu, übergibt jedoch die Behandlung der Pinch-Geste an einen seiner SKNode -Kinder, der in der init() der Szene erstellt wurde, aus bestimmten Gründen nicht relevant hier. Wie auch immer, dies ist die Antwort von neunzehnzehn aus der Perspektive dessen, was er _mySkNode nennt. Es enthält auch einen kleinen Code, um den Zoom zu begrenzen und verwendet nicht die Komfortfunktionen, die am Ende seines Beitrags aufgeführt sind. Der @objc -Teil der Deklaration erlaubt die Verwendung der Funktion in #selector() .

Hier ist was in meinem SKScene :

%Vor%

Und das ist der relevante Abschnitt in meinem SKNode:

%Vor%     
Clay 22.09.2017 02:59
quelle