2017-05-27 2 views
-1

Ich versuche, eine Art von Trail-Effekt zu erreichen, wenn der Block her ein Bild markiert ist: hereTrail-Typ Effekt

Ich versuche, das Bild zu ändern, sondern zu erreichen, was ich will, ist es die nächste auszuwählen über, dann zurück zu weiß, zum Beispiel, wenn die erste Kachel blau ist, aber du willst dritte sein, es wäre nicht blau auf der ersten, dann blau auf der zweiten, dann weiß, DANN der dritte. Ich hoffe das macht Sinn. Hier ist mein Code

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 


UIImage *image = [UIImage imageNamed:@"inside_blue"]; 
_t1.image = image; 
wait = @"yes"; 
} 


- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 


- (IBAction)move:(id)sender { 
UIImage *imageblue = [UIImage imageNamed:@"inside_blue"]; 
UIImage *imagewhite = [UIImage imageNamed:@"inside_white"]; 
_t1.image = imagewhite; 
_t2.image = imageblue; 
[self performSelector:@selector(waitTime) withObject:nil afterDelay:0.2]; 
while ([wait isEqualToString:@"yes"]) { 
    //hi 
} 
_t2.image = imagewhite; 
_t3.image = imageblue; 
[self performSelector:@selector(waitTime2) withObject:nil afterDelay:0.2]; 
while ([wait2 isEqualToString:@"yes"]) { 
    //hi 
} 
_t3.image = imagewhite; 
_t4.image = imageblue; 

} 

- (void)waitTime2 { 

wait2 = @"no"; 

} 


- (void)waitTime { 

wait = @"no"; 

} 

Aber das friert nur die App.

Antwort

0

Natürlich friert das die App ein. Die Zeichnung wird erstellt, wenn die Anwendung zur Ausführungsschleife zurückkehrt und Zeichnungsereignisse liefern kann.

Sie müssen den Code "asynchron" schreiben, den aktuellen Zustand auf das View-Objekt speichern und den Redraw auslösen. Nach dem Einrichten eines Timers kehren Sie zum Code zurück, setzen den nächsten Zustand und lösen die Zeichnung erneut aus. Ich empfehle Ihnen, die Einführung in die Zeichnung zu lesen. Die ganze Erklärung wäre zu viel für eine Antwort auf SO.

Wahrscheinlich ist es einfacher, die gesamte Bewegung als animierbare Eigenschaft zu implementieren. Das Timing und die Redraws würden in diesem Fall automatisch ausgeführt werden.