Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-10-2004, 11:56   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
MC, in die bilder geladen werden, mit link versehen

Hallo zusammen,

Ich hätte hier eine Aufreihung von Bildern, (jedes einzeln in einem Movieclip auf einer eigenen Ebene), die mit links versehen werden sollen - preloader hab ich, funzt aber net wie erwartet.

Code sieht folgendermassen aus:
for (var i=1;i<(maxpix+1);i++) // thumbleiste erstellen
{
createEmptyMovieClip ("box"+i,i);
_root["box"+i]._x=10+((i-1)*130);
_root["box"+i]._y=10;
_root["box"+i].loadMovie (folder+"/thn/"+i+".jpg");

createEmptyMovieClip("spy",49) // Preloader
spy.onEnterFrame = function ()
{
if (_root["box"+i]._width > 1)
{
_root["box"+i].onRelease = function ()
{
getURL("http://www.google.de","_blank");
}
}
this.removeMovieClip();
}
}

(link ist beispielhaft) Script angeblich fehlerlos - sieht jemand nen Fehler?
slashdot ist offline   Mit Zitat antworten
Alt 06-10-2004, 14:58   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
if (_root["box"+i]._width > 1)
Das wird auch nicht reichen. Versuch mal folgendes:
ActionScript:
  1. var fin = int(_level0["box"+i].getBytesLoaded()*100/_level0["box"+i].getBytesTotal());
  2. if(fin >= 100 && _level0["box"+i]._width > 0 && _level0["box"+i]._height>0) {
  3.     delete this.onEnterFrame;
  4.     this.removeMovieClip();
  5.    _level0["box"+i].ID = i;//bei mehreren Buttons in einer Schleife benötigst du eine ID zur Auswertung
  6.    //dann das onRelease-Script
  7.  
  8. }
  Mit Zitat antworten
Alt 06-10-2004, 15:54   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
Danke für Deine Mühen, wieder was gelernt... muss Dich abewr leider enttäuschen: die links tun nicht *schulterzuck*

möglicherweise verliert der mc den link aus irgend einem Grund wieder?
obwohl,... ich bewege die mc's eigentlich nur über die bühne... *koppkratz*
slashdot ist offline   Mit Zitat antworten
Alt 06-10-2004, 16:40   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Dann solltest du mal deine fla rüberschieben...
  Mit Zitat antworten
Alt 08-10-2004, 06:48   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
Okay, ich hab hier leider immernoch das Problem dass die links nicht gesetzt werden.


i.onEnterFrame = function ()
{
var fin = int(_level0["box"+i].getBytesLoaded()*100/_level0["box"+i].getBytesTotal());
if(fin >= 100 && _level0["box"+i]._width > 0 && _level0["box"+i]._height>0)
{
delete this.onEnterFrame;
this.removeMovieClip();
_level0["box"+i].ID = ["mc"+i];
_level0["clip"+i].onRelease = function ()
{
getURL("http://www.google.de","_self");
}
}
}


sieht von euch jemand nen fehler? ich hab langsam keinen kopp mehr für #o]
slashdot ist offline   Mit Zitat antworten
Alt 08-10-2004, 07:25   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
ActionScript:
  1. _level0["clip"+i].onRelease = function ()
  2. {
  3.   trace("klack");
  4.    trace("this="+this);
  5.    getURL("http://www.google.de","_self");
  6. }
Setz mal die beiden traces rein und check im Testmodus, ob der Klick überhaupt ankommt. Kann ich mir zumindest nicht vorstellen, weil die MC-Instanz vorher noch gar nicht erwähnt wurde...
  Mit Zitat antworten
Alt 08-10-2004, 09:49   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
jo hast recht, link kommt nicht an - aber ehrlich gesagt hab ich keinen schimmer, warum ?!? via 'i.' müssts doch ansprechbar sein?!?
hier nochmal das codeschnipsel (leicht geändert)...

PHP-Code:
_global.slideValue=-1;
_global.maxpix=20;
var 
folder="start";
var 
statusText="Bilder werden geladen";

for (var 
i=1;i<(maxpix+1);i++) // thumbleiste erstellen
    
{
    
createEmptyMovieClip ("box"+i,i);
    
_level0["box"+i].ID i;
    
_level0["box"+i]._x=10+((i-1)*130);
    
_level0["box"+i]._y=10;                
    
_level0["box"+i].loadMovie (folder+"/thn/"+i+".jpg");
    
i.onEnterFrame = function ()
        {
    var 
fin int(_level0["box"+i].getBytesLoaded()*100/_level0["box"+i].getBytesTotal()); 
    if(
fin >= 100 && _level0["box"+i]._width && _level0["box"+i]._height>0)
            { 
               
delete this.onEnterFrame
            
this.removeMovieClip();
            
_level0["clip"+i].onRelease = function ()
                { 
                
trace("klack"); 
                
trace("this="+this); 
                
getURL("http://www.google.de","_self"); 
                }
            }
        }
    } 
slashdot ist offline   Mit Zitat antworten
Alt 08-10-2004, 12:58   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
ActionScript:
  1. i.onEnterFrame = function ()
Was soll denn "i" für ein Objektpfad sein? i ist doch eine Schleifenvariable, also soll der Pfad ein Zahlen-MC sein, oder was? Immer daran denken: onEnterFrame() ist eine Ereignisprozedur eines MCs, d.h. der Pfad zum MC steht vor dem Aufruf...

Und wo kommt _level0["clip"+i] für den onRelease plötzlich her? Hast du die MCs schon vorher erstellt?
  Mit Zitat antworten
Alt 08-10-2004, 14:20   #9 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
Okay, das ["clip"+i] ist natürlich falsch, war ein verzweifelter versuch ;o)

i.onEnterFrame = function ()

sollte dagegen funktionieren nachdem ich vier Zeilen oberhalb mit

_level0["box"+i].ID = i;

dieses i als ID zugewiesen habe (war übrigens net meine idee, mal nebenbei *pfeif* ), oder lieg ich da falsch?

Geändert von slashdot (08-10-2004 um 15:25 Uhr)
slashdot ist offline   Mit Zitat antworten
Alt 08-10-2004, 23:22   #10 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
oder lieg ich da falsch?
Ja!

Du hast nur den MCs eine ID mitgegeben. Die benötigen die IDs, wenn ihnen in einer Schleife bspw. onRelease-Events zugewiesen werden. Da der Schleifenzähler "i" ja "flüchtig" ist, wenn die Schleife abgearbeitet ist, findet Flash den "richtigen" MC nur über die ID oder bspw. auch die MC._name-Methode.

Für die enterFrame-Geschichte musst du aber auf jeden Fall noch leere MCs erstellen und diesen MCs dann die Events zuordnen.
  Mit Zitat antworten
Alt 11-10-2004, 08:57   #11 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
Okay, die i-geschichte hab ich nun verinnerlicht auch wenn mir dabei schleierhaft ist, warum der mc nicht gefunden wird wenn ich ihn noch innerhalb der schleife mit i anspreche, oder ausserhalb wenn i global ist... aber gut - hab den code entsprechend geändert, nur die Linkerei will noch nicht...

PHP-Code:
for (var i=1;i<(maxpix+1);i++) // thumbleiste erstellen
    
{
    
createEmptyMovieClip ("box"+i,i);
    
_level0["box"+i].ID = ["mcid"+i];
    
_level0["box"+i]._x=10+((i-1)*130);
    
_level0["box"+i]._y=10;                
    
_level0["box"+i].loadMovie (folder+"/thn/"+i+".jpg");
    }

createEmptyMovieClip ("observer",666);
observer.onEnterFrame = function ()
    {
    for (var 
i=1;i<(maxpix+1);i++)
        {
        var 
fin int(["mcid"+i].getBytesLoaded()*100/["mcid"+i].getBytesTotal()); 
        if(
fin >= 100 && _level0["mcid"+i]._width && ["mcid"+i]._height>0)
            { 
               
delete this.onEnterFrame
            
this.removeMovieClip();
            
MC._["mcid"+i].onRelease = function ()
                { 
                
trace("klack"); 
                
trace("this="+this); 
                
getURL("http://www.google.de","_self"); 
                }
            }
        }
    } 
Ich erstelle nun erst alle clips, vergebe zwecks deutlichkeit 'mcid1', 'mcid2",... als ID und möchte dann die Links in einer separaten schleife innerhalb des clips 'observer' setzen...

Ist das jetzt schon wieder ein grober Denkfehler, oder bin ich nah dran und die syntax stimmt noch nicht?
slashdot ist offline   Mit Zitat antworten
Alt 11-10-2004, 11:03   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Eher ein Denkfehler... Deine MCs haben die Instanznamen box1, box2 etc. Denen musst du dann die onRelease-Events zuordnen und nur die IDs abfragen. Die ID dient wirklich nur zur Erkennung des MCs nach Durchlaufen der Schleife.

ActionScript:
  1. var Linkliste = new Array("","http://www.google.de","http://www.agedoubleju.de","http://www.flashforum.de");//etc
  2. this.createEmptyMovieClip ("observer",666);
  3. for (var i=1;i<(maxpix+1);i++) {
  4.     this.createEmptyMovieClip ("box"+i,i);
  5.     _level0["box"+i].ID = i;
  6.     _level0["box"+i]._x=10+((i-1)*130);
  7.     _level0["box"+i]._y=10;                 
  8.     _level0["box"+i].loadMovie (folder+"/thn/"+i+".jpg");
  9.     _level0.observer.onEnterFrame = function(){
  10.         var fin = int(_level0["box"+i].getBytesLoaded()*100/_level0["box"+i].getBytesTotal());
  11.         if(fin >= 100 && _level0["box"+i]._width > 0 && _level0["box"+i]._height>0){
  12.             delete this.onEnterFrame;
  13.             _level0["box"+i].onRelease = function(){
  14.                 trace("this.ID="+this.ID);
  15.                 getURL(_level0.Linkliste[this.ID],"_self");
  16.            }
  17.              
  18.         }
  19.  
  20.    }
  21. }
  Mit Zitat antworten
Alt 11-10-2004, 12:53   #13 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
okay, also spricht man nach wie vor mit instanznamen an und nimmt die id nur zur Verifikation sozusagen ?!?...

btw: ich sags nur ungern aber es tut net *wegduck*
...scheint so als ob die if-bedingung
--> if(fin >= 100 && _level0["box"+i]._width > 0 && _level0["box"+i]._height>0)

nie true ergibt. fin >= 95 bringt auch nicht den gewünschten erfolg...
slashdot ist offline   Mit Zitat antworten
Alt 11-10-2004, 14:29   #14 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Der Bug kann jetzt an diversen Stellen liegen, z.B. maxpic hat keinen Wert, der Pfad zu den Bildern stimmt nicht etc. Die Preloaderfunktion dürfte es eigentlich nicht sein...

Ich würde auch jedem MC einen eigenen onEnterFrame-Event mitgeben, weil du sonst ab der zweiten Schleife evtl. den einen Event überschreibst...
  Mit Zitat antworten
Alt 12-10-2004, 09:36   #15 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 11
ach dass ich das noch erleben darf... ES FUNZT!!! *gg*

...dabei gabs die geschichte schonmal hier im forum.
wens interessiert: onRelease funktioniert nicht mit mc

Vielen dank an agedoubleu und die anderen Grossmeister!
slashdot 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:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele