Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    Gestione eventi su createEmptyMovieClip

    Sto inutilmente tentando di fare quanto in oggetto.

    codice:
    var mc = "pezzo";
    createEmptyMovieClip(mc, 1);
    _root[mc].onLoad = function() {trace("onload");}
    _root[mc].onData = function() {trace("ondata");}
    _root[mc].loadMovie("pezzo.swf");
    Questo codice non scatena mai nessun evento.
    Perché?
    Ho la certezza "grafica" che pezzo.swf è stato caricato.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    _root[mc].onLoad = function() {trace("onload");}
    allora questo metodo funziona se il tuo mc è un componente(ho l'istanza di una classe), ho letto sul mio libro.In effetti è vero.Adesso non me lo ricordo bene per quali motivi.
    [code]
    #initclip
    function MyClass()
    {
    }
    MyClass.prototype = new MovieClip();
    MyClass.prototype.onLoad = function()
    {
    trace('onLoad')
    };
    Object.registerClass('class', MyClass)
    #endinitclip
    [/load]
    _root[mc].onData = function() {trace("ondata");}
    appena carici unaltro filmato,.jpg .... su un mc, perde le sue proprietà,se fai una ricerca sul forum nega ha spiegato molto meglio di me.

  3. #3
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    perchè come carichi con il loadmovie nel movie clip creato tu contemporaneamente gli cancelli tutte le azioni (se il movie clip non fosse creato con createEmptyMovie non sarebbe così)

    seguendo un consiglio di negatyve, crea un altro movie clip all'interno del primo movie clip creato dal nulla

    il resto del codice l'ho aggiunto io ma non trovavo modo di verificare quando fosse stato caricato visto che non si può usare onData

    var mc = "pezzo";
    this.createEmptyMovieClip("contenitore", 1);
    contenitore.createEmptyMovieClip(mc, 3);
    contenitore.preload=true
    contenitore[mc].loadMovie("pezzo.swf");
    contenitore.onEnterFrame = function() {
    if(this.preload==true){
    if(this[mc].getBytesTotal!=undefined){
    trace("ondata");
    this.preload=false
    }
    }
    }

  4. #4
    Grazie ad entrambi.
    Sono riuscito a far funzionare il suggerimento di Stormy:

    codice:
    var pieces = new Array("pezzo1.swf");
    
    for (var i = 0; i < pieces.length; i++)
    {
    	var mcString = "piece" + i;
    	createEmptyMovieClip(mcString, 1);
    	var mc = _root[mcString];
    	mc.createEmptyMovieClip("inner", 0);
    	mc.inner.loadMovie(pieces[i]);
    	mc.onEnterFrame = _root.handlerMapper;
    }
    
    function handlerMapper()
    {
    	if (this.isLoaded)
    	{
    		// qui ci va il codice da fare eseguire "ondata"
    		this.onEnterFrame = null;
    	}
    	else this.isLoaded = this.inner.getBytesLoaded() == this.inner.getBytesTotal();
    }
    Grazie 50 cent!

  5. #5
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    sì ecco

    io sono talmente abituata a flash 5 che prima che mi entra in mente di aggiungere il

    this.onEnterFrame = null;

    meno male che c'hai pensato tu

  6. #6
    Purtroppo una soluzione del genere non è indolore...
    Ho del codice che va a toccare xscale e yscale dell'oggetto nidificato, ma ora il punto di pivot è da tutt'altra parte!
    E' a 0,0 !!

    Esiste un modo per spostarlo arbitrariamente prima di toccare gli xscale e yscale?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    cioe?

  8. #8
    Originariamente inviato da polliotto
    cioe?
    Ehm... sono fuori argomento con il thread.
    Comunque intendevo che il punto sullo stage in riferimento del quale avviene la scalatura, ora è lo 0,0 quindi l'effetto che prima era uno zoom dell'oggetto a rollover, adesso è diventato un zoom con spostamento, perché avviene in relazione di un punto pivot spostato.

  9. #9
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    e quello è un gran casino dei createEmpyMovie qualunque posizione gli dai all'inizio risultano a 0,0

    non so bene come risolvere, io avevo trovato un escamotage con globalToLocal facendo riferimento alle posizioni dello stage e poi convertendole in valori locali

    prova così

  10. #10
    No, il localToGlobal non fa per me, non mi serve sapere le coordinate del punto, ma come dire ad AS di usare questo punto per gli _rotation.

    Ho comunque trovato un "workaround":
    codice:
    var s = _root.mcRiferimento;
    mc.inner._x -= mc._x += s._x;
    mc.inner._y -= mc._y += s._y;
    "mcRiferimento" è il mc al cui centro voglio far riferire gli _xscale della mia trasformazione.
    Quello che faccio nelle due astruse righe successive è aggiungere questa coordinata a quella del movieclip "contenitore" e contemporaneamente toglierla da quella del contenuto.
    Non mi resta che applicare le scalature o rotazioni all'oggetto "contenitore" anziché al contenuto.

    :metallica

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.