Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-04-2005, 18:56   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 14
Linie zeichnen per Interval

Hallo zusammen!

Habe im moment eine kleine Blockade, weil ich schon länger nichts mehr in ActionScript gemacht habe, sonder mehr mit Lingo gearbeitet habe.

Ich versuche im Moment krampfhaft eine Linie per ActionScript zeichnen zu lassen, und dies soll mittels eines Intervals und einer for Schleife geschehen. Ist das so richtig?

Vielleicht kann mir ja jemand eine kleine Hilfestellung geben oder sagen, wie ich es besser lösen kann. Bisher habe ich Forum nichts brauchbares gefunden, dass auf einem Interval beruht.

Vielen Dank im voraus & Gruß

backes
backes ist offline   Mit Zitat antworten
Alt 03-04-2005, 19:21   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
for schleife?kommt drauf an was du berechnest. Wenn du aber nur simple linien zeichnen willst bracuhst doch nicht mehr als
-eine funktion die rechnet
-die funktion sollte per paramter den movieclip/zeichenebene übergeben bekommen (dort wird gezeichnet und eventuelle nicht temporäre variablen abgelegt)
PHP-Code:
//zeichenfunktion, schlechten stil verzeihen:)
f=function(mc){
var 
winkel=++mc.zaehler
var abweichung=random(10)+1
var x=winkel
var y=Math.cos(x*Math.PI/180)*100-abweichung
mc
.lineStyle(0)
mc.moveTo(x,y)
mc.lineTo(x,y)
mc.lineTo(x+1,y+1)
trace(x)
}
//(zeichenfunktion,refreshrate,welcherMC)
id=setInterval(f,10,this
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 03-04-2005, 19:41   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 14
Moin!

Schonmal danke für deine Antwort!

Leider bin ich grad irgendwie nicht ganz dabei. Wenn ich für x&y feste Werte angebe, wird keine Linie gezeichnet sondern nur ein Punkt, an dieser Stelle. Und die tracefunktion ergibt auch immer nur den fixen Wert.

Zudemn: Wie mache ich es, dass ich den Endpunkt der Linie ebenfalls angebe? Deshalb hatte ich auch an die For schleife gedacht! Oder sollte man das eher via if lösen, oder doch ganz anders?

Gruß

backes
backes ist offline   Mit Zitat antworten
Alt 03-04-2005, 22:03   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
ok ich glaube wir reden ein wenig aneinander vorbei.

die funktion welche per intervall aufgerufen wird zeichnet sequentiell deine punkte-damit entsteht dein animationseffekt .

dazu mußt du entweder in der funktion
-einen algorithmus definieren der dir die "on-the-fly" (x,y) tupel liefert
oder
-einen algorithmus der dir ein bestehendes array voller x,y werte(die du zB davor per forschleife erzeugst) ausliest und niederzeichnet.

wenn du einen anfangspunkt und enpunkt willst, dann kannst das genauso lösen (Werte davor berechnen oder "on-the-fly"), es ist nur eine sache der idee und der umsetzung.


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 04-04-2005, 15:49   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 14
Hallo Deluxe!

Da haben wir anscheinend wirklich aneinander vorbei geredet! Danke nochmal für deine Hilfe!

Habe es bisher wie folgt gelöst, mit deiner Variante als Grundstock:

PHP-Code:
endpunkt 100;
starter = function(obj) {
    if (
wert == endpunkt) {
        
clearInterval(id);
    }
    
_global.wert obj;
    ++
wert;
};
horizont = function (mcxwertywert) {
    
starter(xwert);
    var 
wert;
    var 
ywert;
    
mc.lineStyle(10x990000100);
    
mc.moveTo(xy);
    
mc.lineTo(xy);
    
mc.lineTo(x+1y+1);
};
// INTERVAL(funktion, intervalzeil, mc, xwert, ywert)
id setInterval(horizont2this00); 
Vielleicht kannst du da ja mal drüber schauen, und evtl Tuningmöglichkeiten vorschlagen.

Möchte jetzt nach Möglichkeit eine Funktion haben, die oben genannte Sache "tut" und die überall aufgerufen werden kann. Muss halt an mehreren Stellen zu verschiedenen Zeiten Linien zeichnen, und würde das gerne ähnlich lösen.

Falls du einen Tip hast, bin für alles offen!

Gruß

backes
backes ist offline   Mit Zitat antworten
Alt 04-04-2005, 16:40   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
dafür konntest du nichts weil ich es genauso oben mache, aber du brauchst viele dinge nicht im intervall.
lineStyle reicht einmal zu setzen
das lineTo(x,y) brauch man nicht war ne unaufmerksamkeit von mir
die "killer" funktion "starter" brauchst du nicht- warum denn nicht direkt im intervall diese abfrage ausführen
ich tu mir auch immer schwer, was nun dynamisch sein soll, was nicht
momentan würde es mir so recht logisch erscheinen-für mehrfachverwendung

PHP-Code:
o=this.createEmptyMovieClip("test",1)
o.lineStyle(0)
o.startx=0
o
.endx=100
//eine funktion an ein bestimmtes objekt binden
starter=function(func,timeline){
func.apply(timeline)
}
//auf dem objekt auszuführende funktion
//hier: zeichnen und abbruch
f=function(){
this.moveTo(this.startx,0)
this.lineTo(this.startx+1,0)
//startx erhöhen dann abfragen (pre-inkrementieren)
//-1 da wir einen "pixel" mit ner linie nach rechts zeichnen
if(++this.startx>this.endx-1clearInterval(this.id)
}
//id auf dem objekt ablegen-so ist deine swf aufgeräumt und dir schwirren
//keine variablen quer durch die filme(_global.xxx ist überall zu sehen!! unnötig)
o.id=setInterval(starter,10,f,o
sowas ist vom prinzip nichts anderes als nen enterFrame, du bist aber variabler als mit dem fps-gebundenem enterFrame


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 04-04-2005, 17:23   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 14
besten Dank deluxe!

Wie gesagt, bin grade erst wieder dabei mich in ActionScript einzuarbeiten, daher auch der "killer" Code!

Habe im Moment noch die Probleme, dass ich nicht genau weiß, wo ich was und wie mit unterbringen kann, damit ich möglichst wenig unnötigen Code habe! Daher auch die "killer" Funktion in meinem Script.

Man lernt nie aus! Werde mal wieder weiter frickeln, bis ich erneut an meine Grenzen stoße!

gruß

backes
backes 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 19:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele