ActionScript - Problema con script de pendulo

 
Vista:

Problema con script de pendulo

Publicado por Hugo (1 intervención) el 05/01/2007 12:44:32
hola gente, tengo un problema con este script, si alguien me puede ayudar... gracias!:

//funcion arrastrar
arrastrar = function(MX, MY, CX, CY){
var DX:Number = MX - CX;
var DY:Number = MY - CY;
var AT:Number = Math.atan(DY/DX)*180/Math.PI;
//comportamiento
if(DX >= 0){
if(DY >= 0){
angulo = AT;
}else{
angulo = AT + 360;
};
};
if(DX < 0){
if (DY > 0){
angulo = AT + 180;
}else{
angulo = AT + 180;
};
};
return angulo;
};
arrastra01;
arrastra02;

//empezar y parar el arrastre
menuSup_mc.menu_sup_btn.onPress = function(){
_parent.menu_mc.startDrag(false, 30, 20, 520, 380);
};
menuSup_mc.menu_sup_btn.onRelease = function(){
_parent.menu_mc.stopDrag();
};

//script guiaM
guiaM_mc.onLoad = function(){
var punto = new Object();
this._visible = 0;
};
guiaM_mc.onEnterFrame = function(){
punto.x = menuInf_mc.xypos_mc._x;
punto.y = menuInf_mc.xypos_mc._y;
menuInf_mc.localToGlobal(punto);
this._x = punto.x;
this._y = punto.y;
};

//script guiaC01 cuerda frontal
guiaC01_mc.onLoad = function(){
var punto = new Object();
this._visible = 0;
};
guiaC01_mc.onEnterFrame = function(){
punto.x = cordon_ant_mc.xypos_mc._x;
punto.y = cordon_ant_mc.xypos_mc._y;
cordon_ant_mc.localToGlobal(punto);
this._x = punto.x;
this._y = punto.y;
};

//script guiaC02 cuerda dorsal
guiaC02_mc.onLoad = function(){
var punto = new Object();
this._visible = 0;
};
guiaC02_mc.onEnterFrame = function(){
punto.x = cordon_post_mc.xypos_mc._x;
punto.y = cordon_post_mc.xypos_mc._y;
cordon_post_mc.localToGlobal(punto);
this._x = punto.x;
this._y = punto.y;
};

//················································································

//script cordon anterior
cordon_ant_mc.onLoad = function(){
var nuevaX:Number;
var viejaX:Number = _x;
var altura:Number = _height;
var arrastre;
var punto = new Object();
};
cordon_ant_mc.onEnterFrame = function(){
_x = menuSup_mc._x;
_y = menuSup_mc._y;
//comportamiento
if(arrastra01 == 1){
CX = menuSup_mc._x;
CY = menuSup_mc._y;
MX = _root._xmouse;
MY = _root._ymouse;
_rotation = arrastrar(MX, MY, CX, CY) - 90;
}else{
var nuevaX:Number = _x;
var nuevaY:Number = _y;
var veloX:Number = (viejaX/nuevaX)/20;
var veloY:Number = (viejaY/nuevaY)/20;
viejaX = nuevaX;
viejaY = nuevaY;
punto.x = cordon_ant_mc.xypos_mc._x;
punto.y = cordon_ant_mc.xypos_mc._y;
localToGlobal(punto);
friccion = 0.99;
var xPos:Number = punto.x - menuSup_mc._x;
var g:Number = -9.8;
var a:Number = xPos/altura*g;
var veloRot = (veloX/10 + veloRot + a)*friccion;
_rotation -= veloRot;
};
};

//script cordon posterior
cordon_post_mc.onLoad = function(){
var nuevaX:Number;
var viejaX:Number = _x;
var altura:Number = _height;
var arrastre;
var punto = new Object();
};
cordon_post_mc.onEnterFrame = function(){
_x = menuSup_mc._x;
_y = menuSup_mc._y;
//comportamiento
if(arrastra01 == 1){
CX = menuSup_mc._x;
CY = menuSup_mc._y;
MX = _root._xmouse;
MY = _root._ymouse;
_rotation = arrastrar(MX, MY, CX, CY) - 90;
}else{
var nuevaX:Number = _x;
var nuevaY:Number = _y;
var veloX:Number = (viejaX/nuevaX)/20;
var veloY:Number = (viejaY/nuevaY)/20;
viejaX = nuevaX;
viejaY = nuevaY;
punto.x = cordon_post_mc.xypos_mc._x;
punto.y = cordon_post_mc.xypos_mc._y;
localToGlobal(punto);
friccion = 0.99;
var xPos:Number = punto.x - menuSup_mc._x;
var g:Number = -9.8;
var a:Number = xPos/altura*g;
var veloRot = (veloX/10 + veloRot + a)*friccion;
_rotation -= veloRot;
};
};

//script menu inferior
menuInf_mc.onLoad = function(){
var nuevaX:Number;
var viejaX:Number = _x;
var altura:Number = _height;
var punto = new Object();
};
menuInf_mc.onEnterFrame = function(){
_x = guiaM_mc._x;
_y = guiaM_mc._y;
//comportamiento
if(arrastra02 == 1){
CX = guiaM_mc._x;
CY = guiaM_mc._y;
MX = _root._xmouse;
MY = _root._ymouse;
_rotation = arrastrar(MX, MY, CX, CY) - 90;
}else{
var nuevaX:Number = menuInf_mc.xypos_mc._x;
var nuevaY:Number = menuInf_mc.xypos_mc._x;
localToGlobal(punto);
friccion = 0.99;
var xPos:Number = punto.x - guiaM_mc._x;
var g:Number = -9.8;
var a:Number = xPos/altura*g;
var veloRot = (veloX/10 + veloRot + a)*friccion;
_rotation -= veloRot;
};
};
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problema con el script de arrastre y comportamiento

Publicado por Alejandro (369 intervenciones) el 22/06/2023 22:22:33
El código que compartiste parece tener algunos problemas que podrían estar causando el comportamiento no deseado. Aquí hay algunas sugerencias para solucionarlos:

1. Error de escritura: En el código, veo una referencia a una variable `arrastra01` y `arrastra02`, pero no veo dónde se definen o asignan valores a esas variables. Asegúrate de que estén definidas y tengan los valores correctos para controlar el arrastre y el comportamiento deseado.

2. Variable `viejaY` no definida: En los scripts de `cordon_ant_mc` y `cordon_post_mc`, veo una referencia a la variable `viejaY`, pero no veo dónde se define. Asegúrate de definir correctamente esta variable junto con `viejaX`.

3. Actualización de posición de `menuInf_mc`: En el script de `menuInf_mc`, hay una línea que dice `var nuevaY:Number = menuInf_mc.xypos_mc._x;`, lo cual parece un error ya que estás asignando el valor de `_x` a `nuevaY` en lugar de `_y`. Debería ser `var nuevaY:Number = menuInf_mc.xypos_mc._y;` para actualizar correctamente la posición.

4. Cálculo incorrecto de `veloX` y `veloY`: En los scripts de `cordon_ant_mc` y `cordon_post_mc`, parece haber un error en el cálculo de `veloX` y `veloY`. La fórmula `veloX = (viejaX/nuevaX)/20` y `veloY = (viejaY/nuevaY)/20` no parece correcta. Es posible que necesites revisar y ajustar esos cálculos para obtener el comportamiento deseado.

Asegúrate de corregir estos problemas y probar nuevamente tu animación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar