Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-07-2006, 16:12   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 11
Kreis von AS zeichnen lassen

Hi alle,

Ich suche ein Script, mit dem ich in einem Tutorial bei Bedarf einen Kreis um eine Stelle zeichnen lassen kann.

Ich habe hier gesucht und das folgende Script gefunden (funktioniert nur mit AS 1, und nur im ersten Frame der Scene. Ich brauche es aber so, dass ich es in einen MC packen kann und beliebig in der Zeitleiste und auf der Bühne plazieren kann) - kann jemand helfen? Herzlichen Dank!:

_root.createEmptyMovieClip ( "mc", 1 );

function init() {
b = Stage.width/2;
h = Stage.height/2;
faktor =6.3;
}

_root.mc.onEnterFrame = function () {
_root.mc.kreis(98,98);
if (i > _root.faktor) {
delete _root.mc.onEnterFrame;
}
}

movieclip.prototype.kreis = function (breite,hoehe) {
i += .25;
var x = Math.cos (i) * breite + b;
var y = Math.sin (i) * hoehe + h;
this.lineTo (x,y);
this.lineStyle (5,0xCC0000,100);
}

// Ausführen
_root.onLoad = init;
macangelo ist offline   Mit Zitat antworten
Alt 02-07-2006, 16:39   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
http://www.seibsprogrammladen.de/fra...gorithmen/Draw
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 02-07-2006, 17:02   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 11
Herzlichen Dank, klasse Idee, die Seite.

allerdings war ich in meiner Anfrage ungenau. Ich wollte, dass sich der Kreis aufbaut, sagen wir innerhalb einer Sekunde.

Herzlichen Dank

macangelo
macangelo ist offline   Mit Zitat antworten
Alt 02-07-2006, 17:09   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!

Das Script was du da hast, funktioniert schon (auch wenn der Kreis kacke aussieht ).
Du musst nur auf Groß-/Kleinscheibung achten und Variablen vor der Nutzung deklarieren:
PHP-Code:
_root.createEmptyMovieClip("mc"1);
var 
0;
function 
init() {
    
Stage.width/2;
    
Stage.height/2;
    
faktor 6.3;
}
_root.mc.onEnterFrame = function() {
    
_root.mc.kreis(9898);
    if (
i>_root.faktor) {
        
delete this.onEnterFrame;
    }
};
MovieClip.prototype.kreis = function(breitehoehe) {
    
+= .25;
    var 
Math.cos(i)*breite+b;
    var 
Math.sin(i)*hoehe+h;
    
this.lineTo(xy);
    
this.lineStyle(50xCC0000100);
};
// Ausführen
_root.onLoad init
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 02-07-2006, 17:17   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..Kreis kacke.."
welch anrüchige worte ;-)

deshalb vielleicht die funktion Kreis-Segment und mit i einen immer grösseren winkel zeichnen lassen (das vorherige draw immer mit this.clear(); löschen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 02-07-2006, 19:14   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 11
Herzlichen Dank alle.

das neue Script funktioniert. - Entschuldigt meine Planlosigkeit - aber was muß ich tun, damit es in einem anderen als dem ersten Frame funktioniert. Und wie setze ich es in auf der Bühne an die richtige Stelle?

Besten Dank und einen schönen Abend

Macangelo

Geändert von macangelo (02-07-2006 um 19:16 Uhr)
macangelo ist offline   Mit Zitat antworten
Alt 02-07-2006, 19:24   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
das prototype irgendwo am anfang

und _root durch den mc-pfad ersetzen, wo du das halt rein-draw-en willst.

z.b.
var _mc = _root.neuerkreis_mc.createEmptyMovieClip(...
_mc.kreis(...
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 03-07-2006, 05:07   #8 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 11
so, ich habe meinen MC, den ich positionieren will, "mycircle" genannt und den code wie folgt geändert (läuft leider noch nicht auch nicht, wenn ich in dem MC bin und von da test will):

_root.mycircle.createEmptyMovieClip("mc", 1);
var i = 0;
function init() {
b = Stage.width/2;
h = Stage.height/2;
faktor = 6.3;
}
_root.mycircle.mc.onEnterFrame = function() {
_root.mycircle.mc.kreis(98, 98);
if (i>root.mycircle.faktor) {
delete this.onEnterFrame;
}
};
MovieClip.prototype.kreis = function(breite, hoehe) {
i += .25;
var x = Math.cos(i)*breite+b;
var y = Math.sin(i)*hoehe+h;
this.lineTo(x, y);
this.lineStyle(5, 0xCC0000, 100);
};
// Ausführen
_root.mycircle.onLoad = init;


gruß
Macangelo
macangelo ist offline   Mit Zitat antworten
Alt 03-07-2006, 07:18   #9 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
du hasst doch jetzt schon so viel hilfestellung bekommen. wenn etwas nicht geht, dann probiert man halt so lange drann rum bis es geht...
Code:
var sin = Math.sin, cos = Math.cos, rad = Math.PI/180;
MovieClip.prototype.fDraw_Arc = function(x, y, r, wa, we) {
	with (this) {
		var t = Math.ceil(Math.abs(we-wa)/45);
		wa *= -rad, we *= -rad;
		var d = (we-wa)/t, c = d/2, e = r/cos(c);
		moveTo(x+cos(wa)*r, y+sin(wa)*r);
		while (t--) {
			curveTo(x+e*cos(we), y+e*sin(we=wa-c), x+r*cos(wa), y+r*sin(wa += d));
		}
	}
};
//
function fRund(_container, level, r, x, y, speed) {
	var _mc = _container.createEmptyMovieClip('k'+level, level);
	_mc.w = 0;
	_mc.onEnterFrame = function() {
		this.clear();
		this.lineStyle(0, 0);
		this.fDraw_Arc(x, y, r, 0, this.w += speed);
		if (this.w>=360) {
			delete this.onEnterFrame;
		}
	};
}
//
var _mc = _root.createEmptyMovieClip('kreislich', 1);
for (var i = 1; i<=50; i++) {
	var r = random(120)+40;
	var x = r+random(Stage.width-r-r);
	var y = r+random(Stage.height-r-r);
	var speed = random(6)+3;
	fRund(_mc, i, r, x, y, speed);
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (03-07-2006 um 07:58 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 17-07-2006, 12:43   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2006
Beiträge: 21
Hi,

erstmal danke für das Schnippsel, finde ich super nützlich!
Dazu habe ich eine Frage und zwar wie muss ich das modizieren, dass sich die Kreise von oben her ( da wo jetzt 90° sind ) im Uhrzeigersinn aufbauen ?

Hoffe das ist nicht zu viel verlangt

ciao
macZack ist offline   Mit Zitat antworten
Alt 26-07-2006, 21:22   #11 (permalink)
Weichei
 
Benutzerbild von SpherXz
 
Registriert seit: Nov 2002
Ort: Koblenz a. Rhein
Beiträge: 226
Hi.. interessanterweise beschäftige ich mich grade mit dem gleichen Thema. Ich hab das ganze folgendermaßen gelöst:
PHP-Code:
cx 200;
cy 100;
15;
4.8;
_root.createEmptyMovieClip("kreis",1);
kreis.moveTo(Math.cos(i)*r+cx,Math.sin(i)*r+cy);
kreis.lineStyle(1,0x000000,100);
_root.onEnterFrame = function() {
    if(
i<=11.09){
        
Math.cos (i) * +cx;
        
Math.sin (i) * +cy;
        
kreis.lineTo(x,y);
        
i+=0.1;
    }

Der Kreis wird im Uhrzeigersinn oben beginnend gezeichnet. Per "r" kannst du den Radius des Kreises ändern.

An alle AS-Kings: Ich weiss, dass dem Code nur noch der Griff zum wegwerfen fehlt ^^. Habs halt nich so drauf.

Liebe Grüße
__________________
SpherXz //Relaunch in progress
Wer glaubt, ich sei zu blöd zum schreiben, hat recht!

//Stuff
HTML-Typewriter
SpherXz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele