Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-10-2006, 19:48   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 17
rollover funzt nur für einen mc???

hallo, ich habe ein anfängerfrage.
ich habe hier im forum eine einfache alphafader-methode für einen mc-button gefunden. bei einem rollover blendet der button aus, bei einem rollout blendet der button ein.
wenn ich das script auf einen mc anwende, blendet der mc-button beim rollover wie gewünscht aus, und beim verlassen wieder ein.
benutzt ich aber zwei mc-buttons, blenden die buttons nicht mehr ein sobald ich von einem button zum anderen wechsle - was mache ich falsch?


//link1///////////////////////////////////////////////
this.mc_link1._alpha=33;
this.mc_link1.onRollOver=function()
{
onEnterFrame=function()
{
this.mc_link1._alpha-=9;
if(this.mc_link1._alpha<=9){
this.mc_link1._alpha=9;
delete this.mc_link1.onEnterFrame}
}
}

this.mc_link1.onRollOut=function()
{
onEnterFrame=function()
{
this.mc_link1._alpha+=9;
if(this.mc_link1._alpha>=32){
this.mc_link1._alpha=33;
delete this.mc_link1.onEnterFrame}
}
}
//link2///////////////////////////////////////////////
this.mc_link2._alpha=30;
this.mc_link2.onRollOver=function()
{
onEnterFrame=function()
{
this.mc_link2._alpha-=9;
if(this.mc_link2._alpha<=9){
this.mc_link2._alpha=9;
delete this.mc_link2.onEnterFrame}
}
}

this.mc_link2.onRollOut=function()
{
onEnterFrame=function()
{
this.mc_link2._alpha+=9;
if(this.mc_link2._alpha>=29){
this.mc_link2._alpha=30;
delete this.mc_link2.onEnterFrame}
}
}
Angehängte Dateien
Dateityp: zip test.fla.zip (6,5 KB, 5x aufgerufen)
lisa13 ist offline   Mit Zitat antworten
Alt 08-10-2006, 20:08   #2 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
du überschreibst dein onEnterFrame immer. Einfach mit this. referenzieren,
dann kannst du dir auch die ganzen Pfaden sparen
sebastian ist offline   Mit Zitat antworten
Alt 09-10-2006, 06:51   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 17
mmmh, also wenn ich this.onEnterFrame referenziere, klappt es trotzdem nicht!
lisa13 ist offline   Mit Zitat antworten
Alt 09-10-2006, 08:38   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 17
ok, da ich das problem so nicht lösen konnte habe ich auf flashtalk.at eine ziemlich simple lösung gefunden:
auf jeden button folgendes script schreiben und nur die mc und alphawertbezeichnung ändern!


on (rollOver) {

_global.alphawert3 = true;

}

on (rollOut) {

_global.alphawert3 = false;

}

onClipEvent (enterFrame) {

//Alphawert

if (this._alpha<26 && alphawert3 == false) {

this._alpha += 3;

} else if (this._alpha>10 & alphawert3 == true) {

this._alpha -= 3;

}

}




aber vielleicht kann ja trotzdem jemand erklären warum das erste script nicht hinhaut - wäre nett - danke
lisa13 ist offline   Mit Zitat antworten
Alt 09-10-2006, 09:38   #5 (permalink)
variuse
 
Benutzerbild von SaKiN
 
Registriert seit: Mar 2004
Ort: Berlin
Beiträge: 117
...

Hi,

das liegt bei deinem Script daran, dass die Pfade alle nicht stimmen, die onEnterFrame-Events werden gar nicht gelöscht... hier ne Korrektur:

PHP-Code:

//link1///////////////////////////////////////////////

mc_link1._alpha=33;
mc_link1.onRollOver=function()
{
    
this.onEnterFrame=function()
    {
        
this._alpha-=9;
        if(
this._alpha<=9)
        {
            
this._alpha=9;
            
delete this.onEnterFrame;
        }
    }
}

mc_link1.onRollOut=function()
{
    
this.onEnterFrame=function()
    {
        
this._alpha+=9;
        if(
this._alpha>=32)
        {
            
this._alpha=33;
            
delete this.onEnterFrame;
        }
    }

//link2///////////////////////////////////////////////
mc_link2._alpha=30;
mc_link2.onRollOver=function()
{
    
this.onEnterFrame=function()
    {
        
this._alpha-=9;
        if(
this._alpha<=9)
        {
            
this._alpha=9;
            
delete this.onEnterFrame;
        }
    }
}

mc_link2.onRollOut=function()
{
    
this.onEnterFrame=function()
    {
        
this._alpha+=9;
        if(
this._alpha>=29)
        {
            
this._alpha=30;
            
delete this.onEnterFrame;
        }
    }

In einem Event-Handler referenzierst du immer mit this das Objekt auf dem der Event liegt. Scripts direkt auf die Objekte zu schreiben is arg unschön, bei großen Projekten findest du die Zusammenhänge nicht mehr richtig, schreib immer ein Script, das alle Objekte mit Funktionen versorgt in die Main-Timeline, oder noch besser in ne externe AS-Datei.
Angehängte Dateien
Dateityp: zip test_neu.zip (4,8 KB, 4x aufgerufen)
__________________
variuse | xing.com

Geändert von SaKiN (09-10-2006 um 09:40 Uhr)
SaKiN ist offline   Mit Zitat antworten
Alt 10-10-2006, 07:07   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 17
vielen dank für deine hilfestellung. das mit der benennung der pfade verunsichert mich allerdings. ich habe die movieclips immer über das "pfadenkreuz" im aktions-manager ausgewählt.
dort wurde mir unter "relativ" immer "this.mc_link1" angezeigt und du hast immer "mc_link1" geschrieben. netter weise hast du ja jetzt geschrieben wann man "this" verwendet. blöd nur das er mir das im aktions-manager überhaupt vorgeschlagen hat...

Geändert von lisa13 (10-10-2006 um 07:13 Uhr)
lisa13 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 03:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele