Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    53

    Evidenziare Clip in Flash

    Allora, ecco cos è ke voglio fare:
    sto facendo un gioco di strategia ( e sono anke a un buon punto), ma mirimane solo un "piccolo" problema: il sistema di movimento dei personaggi...
    in pratica, volgio fare che il giocatore possa evidenziare gli omini con la classica evidenziazione "a rettangolo", ovvero come avviene con le icone di windows quando teniamop premuto il tasto sinistro e disegniamo un quadrato...
    dopo questi omini li muovo, ma quaesto è un altro discorso....
    quindi: come posso fare questa evidenziazione (tra l altro caratteristica di ogni gioco di strategia)?????
    Grazie 10000000 a kimi risponde,.......

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho in mente un'idea ma dovrei provarla e ora non posso, intanto provo a schematizzarne i passaggi e li riposto

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    - presupposto il fatto che sappiamo quanti e quali movieclip siano presenti nel nostro stage, creiamo un array che ne contenga i nomi
    - ora abbiamo bisogno di un "oggetto ascoltatore per gli eventi" e gli assegnamo le azioni che dovrebbero funzionare in determinati "momenti"
    - oltre tutto gli assegnamo delle funzioni in modo da poterle richiamare direttamente sull'object con "this" (la creazione ed eliminazione del clip che ci farà da "selettore", ad esempio)
    - creiamo una ulteriore funzione che gestisca l'inserimento o l'eliminazione degli elementi da un array creato apposta, considerando che la funzione calcolerà al rilascio del mouse su quali clip il selettore si è esteso

    sulla base di quanto scritto nel ragionamento, questo sarebbe il codice... ora come detto, io non lo posso provare
    sarebbe da verificare che tutto funzioni correttamente...
    codice:
    var actualObjects:Array = new Array("pippo", "pluto", "paperino", "topolino", "minnie");
    var selectionArray:Array = new Array();
    var verify:Boolean = false;
    var mouseObj:Object = new Object();
    mouseObj.target = this;
    mouseObj.name = "select";
    mouseObj.level = this.getNextHighestDepth();
    mouseObj.insertToArray = function() {
    	for(var i = 0; i<actualObjects.length; i++){
    		if(this.target[actualObjects[i]].hitTest(this.target[this.name])){
    			selectionArray.push(actualObjects[i]);
    		}
    	}
    }
    mouseObj.drawRectangle = function(target:MovieClip, name:String, level:Number, x:Number, y:Number, width:Number, height:Number){
    	target.createEmptyMovieClip(name, level);
    	with(target[name]){
    		lineStyle(1, 0x000000, 100);
    		moveTo(0, 0);
    		beginFill(0x000000, 10);
    		lineTo(width, 0);
    		lineTo(width, height);
    		lineTo(0, height);
    		lineTo(0, 0);
    		endFill();
    		_x = x;
    		_y = y;
    	}
    }
    mouseObj.clearRectangle = function(target, name){
    	target[name].removeMovieClip();
    }
    mouseObj.useArray = function(array:Array){
    	// azioni per utilizzare i clip selezionati
    }
    mouseObj.onMouseDown = function(){
    	verify = true;
    	this.xpos = _xmouse;
    	this.ypos = _ymouse;
    }
    mouseObj.onMouseUp = function(){
    	verify = false;
    	this.insertToArray();
    	this.clearRectangle(this.target, this.name);
    	this.useArray(selectionArray);
    }
    mouseObj.onMouseMove = function(){
    	if(verify){
    		this.drawRectangle(this.target, this.name, this.level, this.xpos, this.ypos, this.target._xmouse-this.xpos, this.target._ymouse-this.ypos);
    	}
    }
    Mouse.addListener(mouseObj);

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    53
    ma quindi dove dovrei inserire il codice x dire ke i clip selezionati devono poi muoversi???

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da twixt3r
    ma quindi dove dovrei inserire il codice x dire ke i clip selezionati devono poi muoversi???
    al posto della parte segnata in rosso, ti ripeto che il codice va provato perchè non sono sicuro che funzioni

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho provato il codice.. c'è una piccola modifica da fare per farlo funzionare regolarmente

    codice:
    var actualObjects:Array = new Array("pippo", "pluto", "paperino", "topolino", "minnie");
    var verify:Boolean = false;
    var mouseObj:Object = new Object();
    mouseObj.target = this;
    mouseObj.name = "select";
    mouseObj.level = this.getNextHighestDepth();
    mouseObj.insertToArray = function() {
    	for (var i = 0; i<actualObjects.length; i++) {
    		if (this.target[actualObjects[i]].hitTest(this.target[this.name])) {
    			selectionArray.push(actualObjects[i]);
    		}
    	}
    };
    mouseObj.drawRectangle = function(target:MovieClip, name:String, level:Number, x:Number, y:Number, width:Number, height:Number) {
    	target.createEmptyMovieClip(name, level);
    	with (target[name]) {
    		lineStyle(1, 0x000000, 100);
    		moveTo(0, 0);
    		beginFill(0x000000, 10);
    		lineTo(width, 0);
    		lineTo(width, height);
    		lineTo(0, height);
    		lineTo(0, 0);
    		endFill();
    		_x = x;
    		_y = y;
    	}
    };
    mouseObj.clearRectangle = function(target, name) {
    	target[name].removeMovieClip();
    };
    mouseObj.useArray = function(array:Array) {
    	// azioni per utilizzare i clip selezionati
    };
    mouseObj.onMouseDown = function() {
    	_root.selectionArray = new Array();
    	verify = true;
    	this.xpos = _xmouse;
    	this.ypos = _ymouse;
    };
    mouseObj.onMouseUp = function() {
    	verify = false;
    	this.insertToArray();
    	this.clearRectangle(this.target, this.name);
    	this.useArray(selectionArray);
    };
    mouseObj.onMouseMove = function() {
    	if (verify) {
    		this.drawRectangle(this.target, this.name, this.level, this.xpos, this.ypos, this.target._xmouse-this.xpos, this.target._ymouse-this.ypos);
    	}
    };
    Mouse.addListener(mouseObj);
    così funziona bene... ora sto provando a vedere come i clip si possono spostare con un secondo click del mouse sullo stage

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    583
    Gran bello script da studiare e memorizzare! Merci

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.