Comunidad de diseño web y desarrollo en internet online

ActionScript 3.0: Línea que se estira con botón sostenido

Citar            
MensajeEscrito el 18 Feb 2011 04:52 am
Algunas veces queremos tener una línea que se estire de ambos extremos por medio de hacer clic sostenido con el ratón. Eso nos podría servir para juegos, diagramas, etc. El siguiente código genera una linea, creada desde el archivo SWF, de una linea. Se le indica la ubicación, la longitud y el color:

package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class Linea extends Sprite {
var tiempo:Timer = new Timer(60,0);
var contenedor:Sprite;
var cuadro1:Sprite;
var cuadro2:Sprite;
var x1:int = 0;
var y1:int = 0;
var x2:int = 100;
var y2:int = 100;
var color:uint = 0;

public function Linea(xx,yy,lon,color):void {
//Sujetador
this.color = color;
this.x1 = xx;
this.y1 = yy;
this.x2 = xx + lon;
this.y2 = yy;
//
cuadro1=new Sprite ;
cuadro1.graphics.beginFill(0xffffff);
cuadro1.graphics.lineStyle(1,0,1);
cuadro1.graphics.moveTo(0,0);
cuadro1.graphics.lineTo(0,5);
cuadro1.graphics.lineTo(5,5);
cuadro1.graphics.lineTo(5,0);
cuadro1.graphics.lineTo(0,0);
//Sujetador 2
cuadro2=new Sprite;
cuadro2.graphics.beginFill(0xffffff);
cuadro2.graphics.lineStyle(1,0,1);
cuadro2.graphics.moveTo(0,0);
cuadro2.graphics.lineTo(0,5);
cuadro2.graphics.lineTo(5,5);
cuadro2.graphics.lineTo(5,0);
cuadro2.graphics.lineTo(0,0);
//
contenedor=new Sprite ;
contenedor.graphics.lineStyle(2,color,.7);
contenedor.graphics.moveTo(x1,y1);
contenedor.graphics.lineTo(x2,y2);
//contenedor.x=xx;
//contenedor.y=yy;
addChild(contenedor);
addChild(cuadro1);
addChild(cuadro2);
//
cuadro1.x=x1-2.5;
cuadro1.y=y1-2.5;
cuadro2.x=x2-2.5;
cuadro2.y=y2-2.5;
//
cuadro1.addEventListener(MouseEvent.MOUSE_DOWN, onMueveCuadro1);
cuadro2.addEventListener(MouseEvent.MOUSE_DOWN, onMueveCuadro1);
//
cuadro1.addEventListener(MouseEvent.MOUSE_UP, onMueveCuadro2);
cuadro2.addEventListener(MouseEvent.MOUSE_UP, onMueveCuadro2);
}

function onMueveCuadro1(e:MouseEvent):void {
e.target.startDrag();
tiempo.addEventListener(TimerEvent.TIMER, onMueve);
tiempo.start();
//trace("inicio",e.target.name,e.target.x, e.target.y);
}

function onMueveCuadro2(e:MouseEvent):void {
tiempo.stop();
e.target.stopDrag();
pintaLinea();
}

function onMueve(e:TimerEvent):void {
pintaLinea();
}

function pintaLinea () {
this.removeChild(contenedor);
contenedor=new Sprite;
contenedor.graphics.lineStyle(2,color,1);
contenedor.graphics.moveTo(cuadro1.x+2.5,cuadro1.y+2.5);
contenedor.graphics.lineTo(cuadro2.x+2.5,cuadro2.y+2.5);
addChild(contenedor);
swapChildrenAt(2, 0);
}

}
}

Por Francisco Javier Arce

86 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Feb 2011 05:00 am
Algunas veces queremos tener una línea que se estire de ambos extremos por medio de hacer clic sostenido con el ratón. Eso nos podría servir para juegos, diagramas, etc. El siguiente código genera una linea, creada desde el archivo SWF, de una linea. Se le indica la ubicación, la longitud y el color:

Código ActionScript :

package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class Linea extends Sprite {
var tiempo:Timer = new Timer(60,0);
var contenedor:Sprite;
var cuadro1:Sprite;
var cuadro2:Sprite;
var x1:int = 0;
var y1:int = 0;
var x2:int = 100;
var y2:int = 100;
var color:uint = 0;

public function Linea(xx,yy,lon,color):void {
//Sujetador
this.color = color;
this.x1 = xx;
this.y1 = yy;
this.x2 = xx + lon;
this.y2 = yy;
//
cuadro1=new Sprite ;
cuadro1.graphics.beginFill(0xffffff);
cuadro1.graphics.lineStyle(1,0,1);
cuadro1.graphics.moveTo(0,0);
cuadro1.graphics.lineTo(0,5);
cuadro1.graphics.lineTo(5,5);
cuadro1.graphics.lineTo(5,0);
cuadro1.graphics.lineTo(0,0);
//Sujetador 2
cuadro2=new Sprite;
cuadro2.graphics.beginFill(0xffffff);
cuadro2.graphics.lineStyle(1,0,1);
cuadro2.graphics.moveTo(0,0);
cuadro2.graphics.lineTo(0,5);
cuadro2.graphics.lineTo(5,5);
cuadro2.graphics.lineTo(5,0);
cuadro2.graphics.lineTo(0,0);
//
contenedor=new Sprite ;
contenedor.graphics.lineStyle(2,color,.7);
contenedor.graphics.moveTo(x1,y1);
contenedor.graphics.lineTo(x2,y2);
//contenedor.x=xx;
//contenedor.y=yy;
addChild(contenedor);
addChild(cuadro1);
addChild(cuadro2);
//
cuadro1.x=x1-2.5;
cuadro1.y=y1-2.5;
cuadro2.x=x2-2.5;
cuadro2.y=y2-2.5;
//
cuadro1.addEventListener(MouseEvent.MOUSE_DOWN, onMueveCuadro1);
cuadro2.addEventListener(MouseEvent.MOUSE_DOWN, onMueveCuadro1);
//
cuadro1.addEventListener(MouseEvent.MOUSE_UP, onMueveCuadro2);
cuadro2.addEventListener(MouseEvent.MOUSE_UP, onMueveCuadro2);
}

function onMueveCuadro1(e:MouseEvent):void {
e.target.startDrag();
tiempo.addEventListener(TimerEvent.TIMER, onMueve);
tiempo.start();
//trace("inicio",e.target.name,e.target.x, e.target.y);
}

function onMueveCuadro2(e:MouseEvent):void {
tiempo.stop();
e.target.stopDrag();
pintaLinea();
}

function onMueve(e:TimerEvent):void {
pintaLinea();
}

function pintaLinea () {
this.removeChild(contenedor);
contenedor=new Sprite;
contenedor.graphics.lineStyle(2,color,1);
contenedor.graphics.moveTo(cuadro1.x+2.5,cuadro1.y+2.5);
contenedor.graphics.lineTo(cuadro2.x+2.5,cuadro2.y+2.5);
addChild(contenedor);
swapChildrenAt(2, 0);
}

}
}


Un ejemplo utilizando esta clase lo podemos ver a continuación:


Si deseas bajar el archivo fuente, pulsa aqui.
Si deseas bajar el archivo de la clase, pulsa aqui.

Por Francisco Javier Arce

86 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Feb 2011 02:33 am
Esto es una copia textual de un ejemplo de la ayuda de Adobe.

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

chrome
Citar            
MensajeEscrito el 22 Feb 2011 04:50 am
Huh?

Por M@U

BOFH

6210 de clabLevel

34 tutoriales
5 articulos

Genero:Masculino   Héroes Bastard Operators From Hell Editores

Bate jubilado de Cristalab

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.