Actionscript 3 Flash cc as3如何使子对象以与父对象相同的方式生效
在这个留言板的帮助下,我已经生成了一段代码,但它是一个接一个的问题。这一次,当你点击一个物体时,一个新的物体会产生,但我需要它,这样产生的子物体会受到重力物理的影响 这是我的密码:Actionscript 3 Flash cc as3如何使子对象以与父对象相同的方式生效,actionscript-3,flash,physics,gravity,flash-cc,Actionscript 3,Flash,Physics,Gravity,Flash Cc,在这个留言板的帮助下,我已经生成了一段代码,但它是一个接一个的问题。这一次,当你点击一个物体时,一个新的物体会产生,但我需要它,这样产生的子物体会受到重力物理的影响 这是我的密码: var drag:Number = 1; var BlockAppear = new MovieClip; gotoAndStop(1, "Minigame-Block"); HeartBear.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_4);
var drag:Number = 1;
var BlockAppear = new MovieClip;
gotoAndStop(1, "Minigame-Block");
HeartBear.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_4);
import flash.events.MouseEvent;
HBS.addEventListener(MouseEvent.CLICK, addHeart);
function addHeart(e:MouseEvent):void
{
var H=new HB;
H.y = 523;
H.x = 721;
addChild(H); //need the child to be effected by the gravity physics.
}
Block.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey_3);
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed_3);
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed_3);
function fl_MoveInDirectionOfKey_3(event:Event)
{
if (leftPressed)
{
Blockr.x -= 5;
}
if (rightPressed)
{
Block.x += 5;
}
}
function fl_SetKeyPressed_3(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.LEFT:
{
leftPressed = true;
break;
}
case Keyboard.RIGHT:
{
rightPressed = true;
break;
}
}
}
function fl_UnsetKeyPressed_3(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.LEFT:
{
leftPressed = false;
break;
}
case Keyboard.RIGHT:
{
rightPressed = false;
break;
}
}
}
function fl_ClickToDrag_4(event:MouseEvent):void
{
HeartBear.startDrag()
gravity = 0
}
stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop_4);
function fl_ReleaseToDrop_4(event:MouseEvent):void
{
HeartBear.stopDrag();
gravity = 0.9
}
var gravity = 0.8;
var floor = 523.3;
var onFloor:Boolean = false;
HeartBear.y = floor;
HeartBear.speedY = 0;
HeartBear.jump = 15;
stage.addEventListener(Event.ENTER_FRAME, enterframe);
function enterframe(e:Event) {
HeartBear.speedY += gravity;
HeartBear.y += HeartBear.speedY;
if(HeartBear.y > floor) {
HeartBear.speedY = 0;
HeartBear.y = floor;
onFloor = true; //gravity physics
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, space);
function space(e:KeyboardEvent) {
if(e.keyCode == Keyboard.UP && onFloor) {
HeartBear.speedY = -HeartBear.jump;
onFloor = false;
}
}
Shopclicker.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene_3);
function fl_ClickToGoToScene_3(event:MouseEvent):void
{
MovieClip(this.root).gotoAndStop(1, "Shop");
}
改变
到
改变
stage.addEventListener(Event.ENTER_FRAME, enter frame);
function addHeart(e:MouseEvent):void
{
var H=new HB;
H.y = 523;
H.x = 721;
addChild(H); //need the child to be effected by the gravity physics.
}
到
改变
stage.addEventListener(Event.ENTER_FRAME, enter frame);
function addHeart(e:MouseEvent):void
{
var H=new HB;
H.y = 523;
H.x = 721;
addChild(H); //need the child to be effected by the gravity physics.
}
到
并尝试将变量名、函数名以及类名简化成驼峰大小写。如何使它们也受拖放物理的影响???我已经有了这段代码,但它只影响父级。为了让它也影响到孩子我应该把HeartBear改成e.currentTarget吗???@user3406023首先,你做了我回答中所说的改变了吗?它正在添加enter frame事件,该事件将重力应用于每个新创建的HB类和事件。currentTarget应用于事件正在修改的电影剪辑。此外,重力不会影响该对象,直到父对象的另一个对象被放下,所以它将在半空中保持。@user3406023更改函数fl\u ClickToDrag\u 4event:MouseEvent:void{HeartBear.startDrag gravity=0}要运行fl_ClickToDrag_4event:MouseeEvent:void{event.currentTarget.startDrag gravity=0}然后将H.AddEventListenerMouseeEvent.MOUSE_向下添加,fl_单击ToDrag_4;到addHeart函数。我现在可以拖动孩子;但重力仍然不会影响它,直到父对象被放下,它仍然保持静止。
function addHeart(e:MouseEvent):void
{
var H=new HB;
H.y = 523;
H.x = 721;
addChild(H); //need the child to be effected by the gravity physics.
}
function addHeart(e:MouseEvent):void
{
var H=new HB;
H.y = 523;
H.x = 721;
addChild(H); //need the child to be effected by the gravity physics.
H.addEventListener(Event.ENTER_FRAME, enterframe);
}