Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    HitTest fra elementi di un array

    Il mio problema è questo:
    Sullo stage ho un movie clip che ne contiene altri(in questo caso 3 ma potrebbero essere n),
    chiamati clip1, clip2 e clip3.
    Al caricamento questi 3 MC assumono posizione e rotazione random (e fanno altre cose non rilevanti ai fini dell'esposizione del mio problema).
    Per gestire comodamente questi MC li ho associati all'array clip.
    Ora ho associato al MC che contiene clip1,2 e3 degli script che fanno si che al contatto del mouse con questi ultimi gli stessi subiscano delle trasformazioni.
    Ora tutto va bene fino a quando i clip non si sovrappongono, poichè, in questo caso quando il mouse si trova sull'area in cui i MC si sovrappongono le trasformazioni hanno effetto su tutti i MC a "contatto" con il mouse.
    La mia intenzione è invece quella di agire solo sul MC più in alto. Certo se i MC dovessero rimanere 3 il problema non si porrebbe, ma siccome il progetto prevede la gestione di 64 MC allora è giocoforza ricorrere all'array, solo che non riesco a trovare il modo di controllare l'hitTest fra elementi dello stesso array (per poi farmi restituire la profondità e creare un nuovo array ordinato per profondità e applicare le trasformazioni solo al primo elemento dell'array).
    Questo è lo script:
    onClipEvent (load) {
    clickon = false;
    velocangle = 10;
    clip = new Array();
    clip[1] = clip1;
    clip[2] = clip2;
    clip[3] = clip3;
    for (var i = 1; i<4; i++) {
    this.clip[i].loadx = this.clip[i]._x;
    this.clip[i].loady = this.clip[i]._y;
    this.clip[i]._xscale = 70;
    this.clip[i]._yscale = 70;
    this.clip[i].maskalpha.loadalpha = this.clip[i].maskalpha._alpha;
    this.clip[i] = eval("this.clip"+i);
    this.clip[i]._x = -400+random(800);
    this.clip[i]._y = -300+random(600);
    this.clip[i]._rotation = random(360);
    this.clip[i].maskalpha._alpha = 50+(random(50));
    this.clip[i].loadrotation = this.clip[i]._rotation;
    }
    }
    onClipEvent (mouseUp) {
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
    clickon = true;
    }
    }
    onClipEvent (enterFrame) {
    for (var i = 1; i<4; i++) {
    this.clip[i].scalax = this.clip[i]._xscale;
    this.clip[i].scalay = this.clip[i]._yscale;
    this.clip[i].startx = this.clip[i]._x;
    this.clip[i].starty = this.clip[i]._y;
    alpha1 = this.clip[i].maskalpha._alpha;
    this.clip[i].distanzax = this.clip[i].loadx-this.clip[i].startx;
    this.clip[i].distanzay = this.clip[i].loady-this.clip[i].starty;
    this.clip[i].ruotato = -this.clip[i]._rotation;
    if (clickon == false) {
    if (this.clip[i].hitTest(_root._xmouse, _root._ymouse, true)) {
    endscale = 100;
    endalpha = 0;
    } else {
    endscale = 70;
    endalpha = 50;
    }
    } else {
    endscale = 100;
    }
    this.clip[i]._xscale += (endscale-this.clip[i]._xscale)/10;
    this.clip[i]._yscale += (endscale-this.clip[i]._yscale)/10;
    if (clickon == true) {
    endalpha = 0;
    this.clip[i]._x += this.clip[i].distanzax/10;
    this.clip[i]._y += this.clip[i].distanzay/10;
    this.clip[i]._rotation += (0+this.clip[i].ruotato)/10;
    this.clip[i]._xscale += (endscale-this.clip[i]._xscale)/10;
    this.clip[i]._yscale += (endscale-this.clip[i]._yscale)/10;
    }
    this.clip[i].maskalpha._alpha += (endalpha-alpha1)/10;
    this.clip[i]._xscale += (endscale-this.clip[i]._xscale)/10;
    this.clip[i]._yscale += (endscale-this.clip[i]._yscale)/10;
    }
    }
    Chi mi aiuta?

  2. #2
    Il mio consiglio è di usare un duplicatemovie clip in questa maniera
    for (i=1; i >= 10; i++){
    duplicateMovieclip("nome","nome"+i,i);}
    e poi con il setProperty impostare le proprietà.
    in ogni movie clip poi inserisci le diverse modaità d'uso;
    del tipo imposti una varibile che cambi le impostazioni del movie.
    penso che così possa risolvere il tuo problema in quanto i nquesto caso il movie attivato è solo quello più alto se gli imposti il
    this.onMouse Over = function (){
    cio che deve fare}
    all'interno del movie.

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.