#actionscript-3 #actionscript #ape
#actionscript-3 #actionscript #ape
Вопрос:
Я пытаюсь создать простое действие исчезновения, когда частица колеса попадает в специальную исчезающую частицу круга. Обычно частица колеса отскакивает от множества других частиц окружности, но когда частица колеса сталкивается с этой частицей окружности, действие приостанавливается, воспроизводится анимация, а когда действие возобновляется, многие частицы окружности исчезают.
Проблема в том, что частица колеса должна просто выпадать из полной остановки, но она продолжается, как будто только что отскочила от, теперь несуществующей CircleParticle. У меня возникли проблемы с очисткой сил. Я пробовал init (), AddForce () и changing .velocity среди других вещей, но он продолжает хотеть продолжить боковое подпрыгивающее движение.
Я использую последнюю версию trunk APE, чтобы фиксировать события столкновения для звука.
package{
import flash.display.MovieClip;
import flash.events.*;
import org.cove.ape.*;
public class DropTest extends MovieClip {
public var self;
public function DropTest(){
self = this;
APEngine.init(0.25);
APEngine.container = this;
//APEngine.damping = 0.92;
APEngine.addForce(new VectorForce(false,0,15));
var defaultGroup = new Group();
defaultGroup.collideInternal = true;
var peg1 = new CircleParticle(10, 30, 5, true, 0.2, 0.3);
defaultGroup.addParticle(peg1);
var peg2 = new CircleParticle(35, 30, 5, true, 0.2, 0.3);
defaultGroup.addParticle(peg2);
APEngine.addGroup(defaultGroup);
peg2.addEventListener(CollisionEvent.COLLIDE, function(evt:CollisionEvent){
self.removeEventListener(Event.ENTER_FRAME, runAPE);
defaultGroup.removeParticle(peg2);
/* The Wheel needs to stop and drop straight down from here.
This doesn't seem to work.*/
wheel.init();
self.addEventListener(Event.ENTER_FRAME, runAPE);
});
var wheel = new WheelParticle(12, 0, 10, false, 3);
defaultGroup.addParticle(wheel);
this.addEventListener(Event.ENTER_FRAME, runAPE);
}
private function runAPE(evt:Event):void {
APEngine.step();
APEngine.paint();
}
}
}
Ответ №1:
Я думаю, у меня есть решение. Я только что повторно создал экземпляр WheelParticle
peg2.addEventListener(CollisionEvent.COLLIDE, function(evt:CollisionEvent){
self.removeEventListener(Event.ENTER_FRAME, runAPE);
defaultGroup.removeParticle(peg2);
/* The Wheel needs to stop and drop straight down from here.
This doesn't seem to work.*/
// Replace with this
defaultGroup.removeParticle(wheel);
wheel = new WheelParticle(wheel.px, wheel.px, 10, false, 3);
defaultGroup.addParticle(wheel);
self.addEventListener(Event.ENTER_FRAME, runAPE);
});
Единственная проблема сейчас заключается в том, что вращение колеса меняется при повторном создании его экземпляра.
Есть ли способ вручную изменить вращение?