Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: hitTest dello Stage

  1. #1
    Utente di HTML.it L'avatar di ilpiubello
    Registrato dal
    May 2000
    Messaggi
    2,685

    hitTest dello Stage

    Ciao,
    mi testereste questo codice per capire dov'è l'errore?

    L'avevo trovato qui, postato un po' di tempo fa...
    In pratica devo fare in modo che, entrando con il mouse nell'area del filmato, si muova un oggetto.
    Ora, l'oggetto si sposta solo un po' poi si ferma fino a che non muovo il mouse... ma non c'è un evento sul mouse!!!
    Inoltre aprendo la pagina il controllo dice che sono già sopra, anche se non lo sono, con il conseguente "primo" spostamento dell'oggetto.

    codice:
    onClipEvent (load) {
    	width = Stage.width;
    	height = Stage.height;
    	extrap = 1;
    	x0;	x1;	y0;	y1;	dx;	dy;
    }
    onClipEvent (enterFrame) {
    	x1 = _level0._xmouse;
    	y1 = _level0._ymouse;
    	if (x1 == x0 && y1 == y0) {
    		if (x1 + extrap * dx < 0 || x1 + extrap * dx > width || y1 + extrap * dy < 0 || y1 + extrap * dy > height) {
    			if(_parent.fasciaLogo_mc.fasciaBianca_mc._y < -5){
    				_parent.fasciaLogo_mc.fasciaBianca_mc._y -= (_parent.fasciaLogo_mc.fasciaBianca_mc._y + 5) / 5;
    			}
    		}
    	} else {
    		dx = x1 - x0;
    		dy = y1 - y0;
    		x0 = x1;
    		y0 = y1;
    		if(_parent.fasciaLogo_mc.fasciaBianca_mc._y > -125){
    			_parent.fasciaLogo_mc.fasciaBianca_mc._y -= (_parent.fasciaLogo_mc.fasciaBianca_mc._y + 125) / 5;
    		}
    	}
    }
    Grazie.
    FaX

  2. #2
    Utente di HTML.it L'avatar di ilpiubello
    Registrato dal
    May 2000
    Messaggi
    2,685
    FaX

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    forse è più facile se spieghi quello che vuoi ottenere esattamente, così da trovare una soluzione alternativa, magari proprio con l'utilizzo di hitTest...

    intanto puoi provare questa funzione per verificare l'hitTest di tutto lo Stage... ovviamente non tengo conto di varianti tipo stage a 100% o allineamenti diversi dal default

    ps. l'ho scritta al volo, è da testare e non so se va correttamente

    Codice PHP:
    var drawRect:Function = function(t:MovieClipn:Stringl:Numberw:Numberh:Number):MovieClip {
        
    t.createEmptyMovieClip(nl);
        
    with(t[n]){
            
    moveTo(0,0);
            
    lineStyle(0,0);
            
    beginFill(0,0,0);
            
    lineTo(w,0);
            
    lineTo(w,h);
            
    lineTo(0,h);
            
    lineTo(0,0);
            
    endFill();
        }
        return 
    t[n];
    }
    var 
    onHitStage:Function = function(){
        
    // azioni all'hitTest sullo stage
    }
    var 
    hitStage:Function = function(event:Function){
        var 
    hit:MovieClip drawRect(this'hit'this.getNextHighestDepth(), Stage.widthStage.height);
        if(
    hit.hitTest(_xmouse_ymouse)){
            
    event();
        }
    }
    //
    hitStage(onHitStage); 

  4. #4
    Utente di HTML.it L'avatar di ilpiubello
    Registrato dal
    May 2000
    Messaggi
    2,685




    Ciao and80.

    Sai che faccio un po' fatica a seguire lo script?

    Quello che vorrei ottenere io è attivare un'azione di movimento tipo questa:
    codice:
    if(_parent.fasciaLogo_mc.fasciaBianca_mc._y < -5){
    	_parent.fasciaLogo_mc.fasciaBianca_mc._y -= (_parent.fasciaLogo_mc.fasciaBianca_mc._y + 5) / 5;
    }
    se il mouse si trova sull'area di un filmato flash posto all'interno di una pagina; se il mouse esce dall'area del filmato attivo un'altra animazione di movimento

    codice:
    if(_parent.fasciaLogo_mc.fasciaBianca_mc._y > -125){
    	_parent.fasciaLogo_mc.fasciaBianca_mc._y -= (_parent.fasciaLogo_mc.fasciaBianca_mc._y + 125) / 5;
    }
    .
    FaX

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    come ti ho detto, non so se lo script va, ma se va, le azioni all'hitTest vanno inserite in questa funzione

    var onHitStage:Function = function(){
    // azioni all'hitTest sullo stage
    }


    quindi le due parti che hai postato andrebbero inserite nella funzione proposta

    ah... una piccola dimenticanza... per verificare in continuazione l'hitTest sullo Stage sarebbe conveniente attivare un enterFrame, o in alternativa, per non caricare troppo la CPU usare un listener per la classe Mouse

    Codice PHP:
    var hitStage:Function = function(event:Function){
        var 
    hit:MovieClip drawRect(this'hit'this.getNextHighestDepth(), Stage.widthStage.height);
        
    hit.onEnterFrame = function(){
            if(
    this.hitTest(_xmouse_ymouse)){
                
    event();
            }
        }


  6. #6
    Utente di HTML.it L'avatar di ilpiubello
    Registrato dal
    May 2000
    Messaggi
    2,685
    ok, grazie and, provo e ti faccio sapere
    FaX

  7. #7
    Utente di HTML.it L'avatar di ilpiubello
    Registrato dal
    May 2000
    Messaggi
    2,685
    Eccomi tornato...
    Ho provato il codice e non mi rileva se il mouse esce dall'area del filmato: in pratica è come se l'hitTest fosse sempre vero, anche se con il mouse esco, o non entro proprio nell'area del filmato...

    Quale può essere il motivo?
    FaX

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il motivo è che l'interazione è fatta solo su flash e non su tutta la pagina, è inutile... mi sa tanto che hai proprio bisogno di javascript per fare i "rilevamenti", e poi dovresti interfacciarlo con Flash per le azioni... credo di poterti dare una mano (compatibilmente ai miei impegni lavorativi ) riguardo alla verifica del "focus" con JS, poi però dovresti provare tu ad interfacciarlo con flash per ottenere le azioni che vuoi

  9. #9
    Utente di HTML.it L'avatar di ilpiubello
    Registrato dal
    May 2000
    Messaggi
    2,685
    Niente dài and.
    Non disturbarti, hai già fatto molto.

    Ritorno al metodo che avevo usato inizialmente: onRollover e onRollout su un elemento grande quanto il filmato. Solo che non volevo avere la mano come cursore su tutto il filmato anche perché ci sono dei pulsanti. Mi sa che l'avevo già chiesto un'altra volta: non è possibile scegliere se visualizzare il cursore mano o freccia, come per i css, vero?
    FaX

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    puoi decidere di non visualizzare proprio la manina utilizzando

    nomeIstanza.useHandCursor = false;

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.