ActionScript - Repulsion de partículas AS3

 
Vista:

Repulsion de partículas AS3

Publicado por Jorge (1 intervención) el 06/08/2009 12:00:17
Lo que realmente estoy buscando es que al mover el raton las partículas se repulsen en AS3.
He colgado un swf muy pequeño en rapidshare,para que puedan ver mejor el efecto.

rapidshare.com/files/264129731/Efecto_.swf.html

Tengo nociones miminas de AS3,pero esto de momento se me escapa de las manos,no tengo ni idea de por donde empezar.

Muchas gracias
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

Efecto de repulsión de partículas al mover el ratón

Publicado por Alejandro (369 intervenciones) el 26/06/2023 18:19:17
Puedo ofrecerte una explicación general sobre cómo puedes lograr el efecto de repulsión de partículas al mover el ratón en ActionScript 3.0 (AS3). Aquí tienes un ejemplo básico de cómo podrías abordar este problema:

1. Crea un nuevo archivo FLA en Adobe Animate o Flash Professional y asegúrate de tener acceso al código fuente (AS3).

2. Define una clase para representar una partícula. Puedes hacerlo creando un archivo ActionScript separado llamado "Particle.as". En esta clase, define propiedades como posición (x, y), velocidad (vx, vy), aceleración (ax, ay) y radio (para representar el tamaño de la partícula). También debes incluir métodos para actualizar la posición y dibujar la partícula en el lienzo.

3. En tu archivo principal FLA, importa la clase de la partícula y crea un array para almacenar múltiples instancias de partículas.

4. Crea una función de evento para capturar el movimiento del ratón. Dentro de esta función, itera sobre todas las partículas en el array y calcula la fuerza de repulsión en función de la distancia entre la posición del ratón y la posición de cada partícula. Luego, ajusta la aceleración de cada partícula según la fuerza calculada.

5. En cada cuadro (frame), actualiza la posición de todas las partículas y dibújalas en el lienzo.

Aquí tienes un ejemplo básico del código que podrías utilizar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// Archivo: Particle.as
package {
    import flash.display.Sprite;
 
    public class Particle extends Sprite {
        private var radius:Number;
        private var vx:Number;
        private var vy:Number;
        private var ax:Number;
        private var ay:Number;
 
        public function Particle(radius:Number) {
            this.radius = radius;
            vx = vy = ax = ay = 0;
            graphics.beginFill(0xFF0000);
            graphics.drawCircle(0, 0, radius);
            graphics.endFill();
        }
 
        public function update():void {
            vx += ax;
            vy += ay;
            x += vx;
            y += vy;
        }
    }
}
 
// Archivo principal FLA
import flash.events.Event;
 
var particles:Array = [];
var repulsionForce:Number = 0.1;
 
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
 
function onEnterFrame(event:Event):void {
    for each (var particle:Particle in particles) {
        particle.update();
    }
}
 
function onMouseMove(event:MouseEvent):void {
    var mouseX:Number = event.stageX;
    var mouseY:Number = event.stageY;
 
    for each (var particle:Particle in particles) {
        var dx:Number = mouseX - particle.x;
        var dy:Number = mouseY - particle.y;
 
        var distance:Number = Math.sqrt(dx * dx + dy * dy);
        var force:Number = repulsionForce / (distance * distance);
 
        particle.ax = force * dx;
        particle.ay = force * dy;
    }
}
 
// Crea y agrega partículas al array
for (var i:int = 0; i < 100; i++) {
    var particle:Particle = new Particle(5);
    particle.x = Math.random() * stage.stageWidth;
    particle.y = Math.random() *
 
 stage.stageHeight;
    particles.push(particle);
    addChild(particle);
}

Recuerda que este es solo un ejemplo básico y podrías ajustar los valores y propiedades según tus necesidades. Asegúrate de tener las librerías adecuadas importadas y de tener acceso al código fuente en tu entorno de desarrollo.
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