Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-12-2004, 10:14   #1 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
Registriert seit: Apr 2003
Beiträge: 269
Wert false zuweisen

Hallo Leute!

Ich hab ma ne Frage. Und zwar habe ich ein Script im frame, da sage ich am Anfang:

RollOutAktiv2 = true
n = 2

MovieClip.prototype.myBildWeg = function(){
if("RollOutAktiv"+n == false){
Thema.onEnterFrame = function() {
if(Thema.MaskeRechts._width <= 2){
Thema.MaskeHoch._height -= Speed;
if(Thema.MaskeHoch._height<=2){
Geklickt.myRelease();
delete Thema;
delete Geklickt;
delete onEnterFrame;
}
else
Thema.MaskeRechts._width -= Speed;
}
}
}
}

wenn ich einen Button klicke passiert folgendes:

Arbeit.onRelease = function(){
RollOutAktiv2 = false
this.gotoAndStop(3);
Thema.myBildWeg();
Geklickt = this
frame = "Arbeit"
}


Nun dachte ich, mein myBildWeg(); wird aufgerufen, weil ja RollOutAktiv2=false ist, aber "RollOutAktiv"+n hat ja den Wert RollOutAktiv2 und nicht den Wert false.
Wie bekomme ich es hin, dass "RollOutAktiv"+n nach dem Klick den Wert false hat? Ich benutze das n, weil RollOutAktiv2 auf den nächsten frames dann RollOutAktiv3,4,5... heißt.
Ich komme grad nicht weiter, hab vielleicht einen Knoten im Hirn, wäre nett, wenn mir wer weiter helfen kann.

Grüßchen swky
SwKy ist offline   Mit Zitat antworten
Alt 15-12-2004, 10:35   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Versuch's mal so:
ActionScript:
  1. if(this["RollOutAktiv"+n] == false){
  Mit Zitat antworten
Alt 15-12-2004, 10:35   #3 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
oder so:

"RollOutAktiv"+n == false

sollte

eval ("RollOutAktiv" + n) == false

heissen.
dburucu ist offline   Mit Zitat antworten
Alt 15-12-2004, 10:52   #4 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
Registriert seit: Apr 2003
Beiträge: 269
@ agedoubleju: wieso this? funzioniert auch nicht, und mit ohne this gibt er wieder RollOutAktiv2 aus.

@ dburucu: jup, das geht. das was ich will, funzt dann zwar immer noch nicht, aber immerhin gibt er schon mal false aus, damit bin ich einen Schritt weiter und kann den nächsten Fehler suchen :-)
Also Desten Bank!
SwKy ist offline   Mit Zitat antworten
Alt 15-12-2004, 11:00   #5 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
agedoubleju's Lösung ist aber eigentlich der bessere, sollte auch gehen.
dburucu ist offline   Mit Zitat antworten
Alt 15-12-2004, 11:41   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
oh schrecklich. du solltest dir erstmal im klaren sein wo deine befehle ausgeführt werden- du hast ziemlich komische gültigkeitsbereiche.
definierst du innerhalb einer funktion eine variable nicht explizit per "var" oder "this.var" so wird die variable in der zeitleiste abgelegt wo die fuktion definiert wurde. klar das das oftmals funktioniert weil jeder seine funktionen im root ablegt- aber irgendwann gehts auch mal schief!

und was ist das?
RollOutAktiv2

gehts das etwas weiter mit
RollOutAktiv3
RollOutAktiv4
usw?!

wenn du schon protypes verwenden willst dann nutz sie doch auch.
brauchst du die funktion überhaupt mehrmals?schonmal gut!
also wo legst du deine rollout variable an und wie?
richtig per var inerhalb des prototypes.
Was dann passiert ist das deine variable nun auf dem angesprochenen MC liegt-so wie es sein soll->jeder soll sein süppchen kochen und nicht alles auf den root werfen.
(ein this innerhalb verweist auf deinen angesprochenen mc, versuch mal diese eigenschaft auszunutzen)


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 15-12-2004, 12:37   #7 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
Registriert seit: Apr 2003
Beiträge: 269
@Deluxe: Wenn du dir schon die Zeit nimmst, auf einen Beitrag zu antworten (was im Prinzip ja ganz nett ist), dann ist zwar etwas Kritik schon o.k., aber etwas hilfreicher und konstruktiver wäre schon nicht schlecht.

"oh schrecklich." <- schon mal sehr konstruktiv

was meinst du mit Gültigkeitsbereiche?

Variablen: Freue mich über Erklärungen.
var macht locale Variablen und beschränkt diese auf die entsprechende Zeitleiste, aber ich dachte, das wären sie ohne var auch? Was sind die ohne var dann? Und was ist der Unterschied zu this.var?

"und was ist das? RollOutAktiv2" <- versteh die Frage nicht, wonach siehts denn aus?

"gehts das etwas weiter mit RollOutAktiv3, RollOutAktiv4, usw?!" <- röööchtöööch! Sagte ich ja.

Wieso nutze ich mein Prototype nicht?

"also wo legst du deine rollout variable an und wie?
richtig per var inerhalb des prototypes." <- versteh ich gar nich, bitte erklären.

"(ein this innerhalb verweist auf deinen angesprochenen mc, versuch mal diese eigenschaft auszunutzen)" <- das ist doch mal konstruktiv.

Im Übrigen hab ich nicht umsonst meinen Untertitel. Ich fang grad mal an meine ersten Scripte zu schreiben und denke meistens hinterher, dass sie recht konfus sind und man sie sicher normalerweise anders geschrieben hätte, aber da ich selber ausprobieren muss und niemand hier ist, der mir sacht wie mans ordentlich macht, kommen dann öfters mal ein paar komische Sachen raus, aber man kann ja nur draus lernen. Und prototype benutze ich sowieso erst das erste mal und muss es erst mal richtig verstehen lernen. Und ich brauche die funktion mehr mals.

So. Warte auf Antwort.
SwKy ist offline   Mit Zitat antworten
Alt 15-12-2004, 13:45   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
gültigkeitsbereich bzw scope.
eine variable die du per var deklarierst bzw gleich initialisierst ist nur solange existent wie die funktion, die sie erschaffen hat, läuft.
eine variable die du explizit per this auf den aktuellen scope verweist, wird dort abgelegt-"normale" funktionen, also keine methoden einer klasse, haben keinen eigenes objekt, ein this verweist auf die zeitleiste wo sie deklariert wurden
initialisierst du deine variable eifnach per

variable="hallo"
so läuft das wie folgt ab
achtung beispiel:
ActionScript:
  1. var r=_root.createEmptyMovieClip("movie",1)
  2. r.f=function(){
  3.     var a="hallo"
  4.           b="du da"
  5.         this.c="ich ja"
  6. }
  7. r.f()

r->immernoch vorhanden da zeitleiste noch vorhanden
a im niemalsland
b noch vorhanden aber im root
c auch da aber im mc "movie" (referenz dahin in r abgelegt)
__

viele machen den fehler sehen überall prototype und denken wow so will ich das auch machen dabei hätte eine winzig kleine funktion gereicht.
stattdessen wurden alle movieclips mit dieser funktion überladen
(mußt du dir nur mal vor augen halten, wenn du einen prototype auf die movieclip klasse definierst, so hat jeder erstellte mc einen verweis auf diese neu definierte funktion.


jetzt mal paar konkrete dinge:

wenn du nen protype definierst für die movieclip klasse
dann ist diese funktion gültig für alle mcs.
wieso sprichst du darin aber nur einen speziellen mc (nämlich thema) an.
ein aufruf auf dem mc thema und ein "this" täten doch schon genau das was du willst->this zeigt dann auf deinen thema mc.
ActionScript:
  1. Movieclip.prototype.sagName=function(){
  2.  trace("mein Name: "+this._name)
  3. }
  4.  
  5. _root.createEmptyMovieClip("abc",1)
  6. abc.sagName()
  7. ref=_root.createEmptyMovieClip("def",2)
  8. def.sagName()

eine funktion- unendliche viele mcs, und es ist egal wie sie heißen,
per this greif ich auf den betreffenden mc zu
ActionScript:
  1. Movieclip.prototype.sagName2=function(){
  2.  var a="bin glei gelöscht" //zugriff per z=a
  3.  this.b="ich werde abgelegt" //zugriff z=this.b
  4.  c="und ich verhunger im _root" //zugriff z=c
  5.  trace("mein Name: "+this._name)
  6. }
  7.  
  8. _root.createEmptyMovieClip("abc",1)
  9. abc.sagName2()
  10. ref=_root.createEmptyMovieClip("def",2)
  11. def.sagName2()


sollte nich so destruktiv rüberkommen
hab doch auch mal angefangen!!
denke das hilft dir schon mehr


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 15-12-2004, 13:56   #9 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
hi


wen du ein bischen english verstehst kan ich dir das hier empfehlen :

http://timotheegroleau.com/Flash/art...cope_chain.htm
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 15-12-2004, 16:47   #10 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
Registriert seit: Apr 2003
Beiträge: 269
Thumbs up

@Deluxe: jaaaa :-) viel besser. Damit kann ich doch was anfangen. Jetzt hab ich erst mal Denkstoff.
Mit dem prototype hast du tatsächlich recht, evtl. reicht eine funktion, muss ich noch mal gucken.
Vielen Dank also erst mal. Und auch an Xeef, das werd ich mir mal anschauen.
SwKy ist offline   Mit Zitat antworten
Alt 06-01-2005, 10:38   #11 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
Registriert seit: Apr 2003
Beiträge: 269
Hallo Leute!

Ich hab das alte Thema noch mal rausgeholt, weil es noch um das gleiche geht und ich noch eine Frage dazu habe.

ICh weiß jetzt also, dass ich bei

RollOutAktiv2 = true
n = 2

mit

eval ("RollOutAktiv" + n) == false

abfragen kann, ob RollOutAktiv2 false ist.

Wie aber schreibe ich, wenn ich RollOutAktiv+n den Wert false zuweisen will

eval ("RollOutAktiv" + n) = false
geht ja nicht. Seh ich grad den Wald vor lauter Bäumen nicht?

Würde mich freuen, wenn mir da wer weiter helfen könnte.

gr swky
SwKy ist offline   Mit Zitat antworten
Alt 06-01-2005, 12:43   #12 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
du mußt wissen in welcher zeitleiste sich die variable befindet
zB für root:

_root["RollOutAktiv"+n]=false
funktioniert natürlich auch mit _aretn und der aktuellen zeitleiste:
this[RollO...]=false
_parent[RollO...]=false


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 06-01-2005, 15:32   #13 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
Registriert seit: Apr 2003
Beiträge: 269
wieso eckige Klammern? Was bedeuten die?

Geht aber auch nicht

Syntaxschimpfe:
Nach '.'-Operator wurde ein Feld erwartet.
_root.["RollOutAktiv"+n]=false

oder:
Die linke Seite des Zuweisungsoperators muss eine Variable oder eine Eigenschaft sein.
["RollOutAktiv"+n]=false


Meine Variable ist im 2. Frame der root-Zeitleiste
SwKy ist offline   Mit Zitat antworten
Alt 06-01-2005, 15:43   #14 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du musst es schon so schreiben, wie Deluxe es vorgegeben hat, also ohne Punkt:
ActionScript:
  1. _root["RollOutAktiv"+n]=false;
So kannst du übrigens auch mehreren Variablen Werte zuordnen, bzw. mehreren MCs Eigenschaften verpassen, z.B.:
ActionScript:
  1. //5 MCs erstellen
  2. for(var i=0,i<4;i++){
  3.    _level0.createEmptyMovieClip("meinMC"+i,i);//erstelle meinMC0, meinMC1 etc auf den Tiefen 0-4 des Levels 0
  4.    _level0["meinMC"+i]._x=...;//jedem MC Startwerte zuweisen
  5. }
  Mit Zitat antworten
Alt 06-01-2005, 15:58   #15 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
Registriert seit: Apr 2003
Beiträge: 269
ooh schorrie und danke für die weiteren Tipps.
SwKy 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 13:30 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele