Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/06/2010, 05:32
Avatar de andmai
andmai
 
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: limite de movimiento startdrag

hola!


estoy intentando hacer algo parecido al problema aqui expuesto.

Estoy haciendo un juego en el que hay un tablero con casillas y fichas.Quiero restringir el movimiento de la ficha para que no pueda salir del tablero. Tengo la clase Ficha.as


Código:
package {
	import flash.events.MouseEvent;
	import flash.display.*;

	public dynamic class Ficha extends Sprite {

		private var nombre:String;
		private var color:uint;
		private var casilla:Casilla;
		private var bloqueada:Boolean;//Será true cnd no sea el turno de esa ficha


		public function Ficha(p_nom:String,p_color:uint,p_bloq:Boolean, p_casilla:Casilla):void {
			super();
			nombre=p_nom;
			color=p_color;
			bloqueada=p_bloq;
			casilla=p_casilla;

			if (! bloqueada) {
				addEventListener(MouseEvent.MOUSE_DOWN,arrastrar);
				
				addEventListener(MouseEvent.MOUSE_UP,soltar);
			}
		}

		public function getNombre():String {
			return nombre;
		}

		public function getColor():uint {
			return color;
		}
		public function setNombre(nom:String) {
			nombre=nom;
		}
		public function setColor(col:uint) {
			color=col;
		}

		public function getCasilla():Casilla {
			return casilla;
		}

		public function arrastrar(event:MouseEvent):void {
			this.startDrag();
		}

		public function soltar(event:MouseEvent):void {
			this.stopDrag();
		}

		public function dibujarFicha(x:int,y:int):void {
			var s:Sprite = new Sprite ();
			s.graphics.beginFill(color);
			s.graphics.lineStyle(2,0x800080);
			s.graphics.drawCircle(x,y,8);
			this.addChild(s);
		}

		public function moverArriba(num:int, f:Ficha):void {
			f.y=f.y- (20*num);

		}
		public function moverAbajo(num:int,f:Ficha):void {
			f.y=f.y+ (20*num);
		}
		public function moverIzquierda(num:int, f:Ficha):void {
			f.x=f.x- (20*num);

		}
		public function moverDerecha(num:int, f:Ficha):void {
			f.x=f.x+ (20*num);
		}
		public function getLocalX():Number {
			return x;
		}
		public function getLocalY():Number {
			return y;
		}

Me gustaría crear alguna funcion en la clase que restringiera ese movimiento para luego poder implementarla en el .fla. El tablero es un cuadro Sprite con el que supongo que tengo que comparar la ficha mediante hitTestObject pero no se como hacerlo.

Todo esto lo estoy haciendo con as3.



Muchisimas gracias de antemano