Visualizzazione dei risultati da 1 a 7 su 7

Discussione: AS3 News Ticker

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282

    AS3 News Ticker

    Ciao a tutti
    ho fatto un semplice news ticker ma mi da uno strano problema...


    unica cosa da dire è che nel codice importo un swf esterno

    1) volevo chiedervi come inserire la velocità nello scorrimento (in modo che quando passo il mouse aggiungo l'ascoltatore sul mouse over a velocità 0)...e non ci sono riuscito

    2) mi da un errore (scavalcato perchè ho inserito direttamente la cifra)...perchè se importo un swf esterno con la classe Loader, chiamando la variabile ldr se richiedo quindi ldr.height non mi da subito l'altezza ma aspetta un pò? ho fatto il trace ma me lo da solo dopo 3 letture nell'evento per il movimento...

    di seguito il codice è commentato e quindi è tutto meglio spiegato li (non so come si inserisce il testo qui in formato tag per poterlo leggere meglio, quindi lo incollo il codice normalmente)
    grazie in anticipo per l'aiuto


    import flash.display.*;
    import flash.net.URLRequest;

    //creazione del rettangolo contenitore in modo da far scomparire
    // il testo quando raggiunge i suoi bordi.
    var rect:Shape = new Shape();
    rect.graphics.beginFill(0xFFFFFF);
    rect.graphics.drawRect(100, 100, 300, 400);
    rect.graphics.endFill();
    addChild(rect);

    //utilizzo della classe Loader per importare il file swf esterno
    var ldr:Loader = new Loader();
    ldr.mask = rect;
    var url:String = "2.swf";
    var urlReq:URLRequest = new URLRequest(url);
    ldr.load(urlReq);
    //100 perchè bisogna calcolare anche la posizione del rettangolo, cioè la posizione del file swf
    // è calcolato rispetto lo stage anche se sarà inserito all'interno del rettangolo contenitore,
    // es. il punto x=0 e y=0 saranno calcolate in base allo stage quindi si troverà in alto a sinistra
    // dello stage, quindi se il contenitore si troverà al centro il file importato non verrà
    // visualizzato perchè uscirà fuori l'area del rettangolo.


    // tutto il contenuto del file swf importato è stato racchiuso tutto in un simbolo il cui contenuto
    // è stato impostato con il centro di puntamento in alto a sinistra, in modo da poter meglio
    // calcolare l'uscita del file importato dal rettangolo in questo modo:
    ldr.y=100+rect.height; // il valore 100 l'ho spiegato su...
    ldr.x=100;
    addChild(ldr);

    //questi 2 script sono inutili perchè non verrà mai calcolato il valore dell'altezza del ldr
    // darà sempre valore 0 e non 500 come è correttamente alto il file.
    //var altezza:uint =new uint();
    //altezza =ldr.height;
    trace(ldr.height); // qui il problema mi da 0 anche se il file importato è alto 500px
    //aggiungo l'ascoltatore per animare il testo e l'eventualità di ritorno a capo e relativa pausa
    ldr.addEventListener(Event.ENTER_FRAME,scrollatest o);
    function scrollatesto(e:Event):void
    {

    ldr.y--;
    if (ldr.y == 100-502)
    {
    ldr.y=100+rect.height;
    }
    trace(ldr.height); // qui invece mi da tre volte 0 e poi mi da sempre 500 cioè il valore giusto
    //perchè mi da 0 inizialmente? sopra così non posso far calcolare l'altezza del file importato
    // quindi sarò costretto ad inserire sempre il numero equivalente all'altezza, quindi sarò
    // costretto a cambiare ogni qualvolta questo valore. Come faccio a fargli dare l'altezza
    //dall'inizio?

    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    non mi aiuta nessuno?

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Per mascherare un qualsiasi DisplayObject esiste la proprietà dedicata scrollRect a cui bisogna passare un oggetto Rectangle che determina la zona visibile del clip.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    Ciao Andrea e grazie per la risposta...

    ma ho visto che la proprietà scrollRect appartiene alla classe DisplayObject ed io interagisco su un MC. Potrei fare una classe con extend MC ma tutte le volte che ci ho provato non è andato a buon fine :-D ora ci provo...

    Ma comunque il codice che ho scritto sopra funziona... e grazie al tuo aiuto ho visto come si imposta la velocità sullo scroller che ho fatto fare senza la proprietà consigliata...

    l'unico problema è che quando importo il file swf con la classe loader non mi da subito la dimensione del file importato. con il la proprietà height. Non so il perchè ho fatto il trace nell'Enter frame per lo scroller...e mi da 0 per 3 volte e poi dopo mi da il valore corretto.
    Quindi quando gli dico di ritornare a capo quando arriva alla lunghezza del file importato non si ferma continua a salire perchè non arriva mai a 0 (come lo vede lui) quindi all'infinito...

    ma forse mi va bene anche così...prima di pubblicare il file mi faccio un trace del file esterno o lo vedo direttamente nel suo fla e inserisco direttamente il valore numerico nel codice...

    grazie ancora per l'aiuto...
    ciao
    Tony

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    La classe MovieClip estende la classe Sprite che a sua volta estende prima la classe DisplayObjectContainer e poi la classe DisplayObject, perciò tutti i metodi appartenenti a quelle classi, sono estesi ed utilizzabili anche nella classe MovieClip.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da raziel1973
    l'unico problema è che quando importo il file swf con la classe loader non mi da subito la dimensione del file importato. con il la proprietà height. Non so il perchè ho fatto il trace nell'Enter frame per lo scroller...e mi da 0 per 3 volte e poi dopo mi da il valore corretto.
    Quindi quando gli dico di ritornare a capo quando arriva alla lunghezza del file importato non si ferma continua a salire perchè non arriva mai a 0 (come lo vede lui) quindi all'infinito...
    Beh, questo è logico, devi aspettare che il caricamento sia terminato per gestire quelle proprietà.

    Per il Loader però devi agganciare il listener alla sua proprietà contentLoaderInfo.

    Codice PHP:
    var l:Loader = new Loader();
    l.contentLoaderInfo.addEventListener(Event.COMPLETEcomplete);
    function 
    complete (e:Event) {
        
    trace (l.width);
        
    trace (l.height);
    }
    l.load(new URLRequest("test.swf")); 

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    già vero...
    quanto ancora devo lavorare perchè inizierò a ragionare facilmente in termini Action Script !!!

    grazie Andrea

    Tony

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.