Kreis-Tween

Nervensache

Mitglied
Hallo,
ich hab folgendes Problem: Ich möchte ein Kreis erstellen, der zuerst nur ein kleiner Strich ist, und dann kreisrum im Uhrzeigersinn zunimmt.
Leider schaffe ich das einfach nciht, wie mache ich das am besten?

Viele Grüße
Simon
 
Hi,

Code:
var px = 300;
var py = 200; // Mittelpunkt

var radius = 50; // Radius

var speed = 0.05; // Geschwindigkeit

var ang = 0;

this.lineStyle(1, 0x000000, 100);

this.moveTo(px + Math.sin(ang) * radius, py - Math.cos(ang) * radius);

this.onEnterFrame = function() {
	this.lineTo(px + Math.sin(ang) * radius, py - Math.cos(ang) * radius);
	ang += speed;
	if (ang >= Math.PI * 2) {
		ang = Math.PI * 2;
		this.lineTo(px + Math.sin(ang) * radius, py - Math.cos(ang) * radius);
		delete this.onEnterFrame;
	}
}

Gruß
.
 
Hallo,

vielen Dank.
Leider erzeugt das Script ja nur eine Kreisumrandung.
Kann man auch einen zunehmenden, gefüllten Kreis erzeugen ?

Viele Grüße
Simon
 
Hi,

natürlich: Du musst statt der Methode lineStyle allerdings die Methode beginFill (siehe Dokumentation) aufrufen, und dafür sorgen, dass der Kreisausschnitt geschlossen wird (sprich: vom Mittelpunkt beginnen und auch im Mittelpunkt aufhören).
Code:
var px = 300;

var py = 200; // Mittelpunkt

var radius = 50; // Radius

var speed = 0.05; // Geschwindigkeit

var ang = -speed;

this.moveTo(px + Math.sin(ang) * radius, py - Math.cos(ang) * radius);

this.onEnterFrame = function() {
	this.clear();
	this.beginFill(0xFF0000, 100);
	ang += speed;
	if (ang >= Math.PI * 2) ang = Math.PI * 2;
	this.moveTo(px, py);
	for (var i=0; i<ang; i+=0.1) {
		this.lineTo(px + Math.sin(i) * radius, py - Math.cos(i) * radius);
	}
	this.lineTo(px + Math.sin(ang) * radius, py - Math.cos(ang) * radius);
	this.lineTo(px, py);
	if (ang == Math.PI * 2) {
		delete this.onEnterFrame;
	}
}

Gruß
.
 
Kann man diesem Kreis eine Funktion als Maske zuordnen? An welcher Stelle fügt man setMask ein und welche Ebene wird beeinflusst? Reicht es, wenn man die Ebene darunterlegt?

Grüße
akel
 
Hallo Tobias,

der Kreis soll eine Maske darstellen für eine Ebene, die darunter liegt.

Grüße
akel
 
Hi,

erstelle einen leeren MovieClip (Instanzname "mask"), den Du auf die Maskenebene (oberhalb der zu maskierenden Ebene) setzt.

Zeichne nun den Kreis in diesem leeren MC: Statt "this.moveTo" bzw. "this.lineTo" gibst Du im Script dazu "mask.moveTo". bzw. "mask.lineTo" an.

Gruß
.
 
mmm funktioniert leider nicht so richtig. Dachte erst, es liegt an der Flash-Version MX, weil die auch öfter abgestürzt ist bei "Szene testen". Hab's jetzt aber auch mit Flash 8 probiert und da sieht's genauso aus: Der Kreis, der die Maske darstellt ist am Anfang zu sehen und wird sozusagen von der Maske weggeschoben.

Macht aber nix, ich mach das anders ohne Maske. Vielen Dank.
 
Zurück