小代码示例

时间:2014-03-05 14:29:22

标签: actionscript-3 flash flashdevelop

我开始学习ActionScript 3.0,我从Pascal那里得到了一些基本的编程概念。

简要解释为什么我会问我要问的问题:我不相信通过理论学习 - 例如,我正在观看关于你可以在2013年PES(专业进化足球)中做的技巧的视频并注意到我一个接一个地忘记了它们,因为视频一直在向前移动,只有在使用它们之后,它们才会在需要时自然地向我发出。这适用于任何事情,每个人都通过直接经验学习,婴儿没有语言,他不需要走路或说话的理论,只需围绕他人和尝试失败的方法,他学会走路和沟通(其中一个原因)我认为我们不需要在学校教授葡萄牙语语法,而是需要阅读和交谈。

我有这种方法来获取代码,阅读,然后删除此行和该行,看看会发生什么。 Pascal在语法上非常直观,我通过擦除,改变线条和看到发生的事情学到了很多东西。经过一段时间后,我才会寻找理论,这个理论在时间上是有意义的,而不是我脑中的随机事实。

所以我在这里问一个非常简单的代码示例 ^ _ ^“ - 就像按下两个箭头键时向左/向右移动的方格。

我正在阅读这些东西,无论如何寻找我可以抓住并开始拉动的提示。我确实看过一个看起来很简单的教程,但他没有使用我可以访问的Flash Develop,所以我没有像他在教程中那样绘制正方形的工具,以及其他东西。 (Creating a 'Copter' style game in Flash - ActionScript 3

1 个答案:

答案 0 :(得分:0)

左右移动方格的代码;)我做得很简单,所以你可以研究它。

package {

    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.ui.Keyboard;

    public class StackOverflow extends Sprite {
        private var _keyListener:KeyListener;
        private var _actor:Actor;

        public function StackOverflow() {
            addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }

        private function onAdded(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, onAdded);

            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            start();
        }

        private function start():void {
            _actor = new Actor(40, 0x323232);
            _keyListener = new KeyListener(stage);

            addChild(_actor);

            _actor.x = stage.stageWidth * 0.5;
            _actor.y = stage.stageHeight * 0.5;

            //Main loop
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }

        private function onEnterFrame(e:Event):void {
            if (_keyListener.isDown(Keyboard.RIGHT)) {
                _actor.x += _actor.speed;
            }
            if (_keyListener.isDown(Keyboard.LEFT)) {
                _actor.x -= _actor.speed;
            }
        }
    }
}

import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.KeyboardEvent;

internal class KeyListener {
    private var _keys:Object;

    public function KeyListener(stage:Stage) {
        _keys = {};

        stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);
        stage.addEventListener(KeyboardEvent.KEY_UP, onKeyReleased);
        stage.addEventListener(Event.DEACTIVATE, onDeactivate);
    }

    public function isDown($keyCode:uint):Boolean {
        return ($keyCode in _keys);
    }

    private function onDeactivate(e:Event):void {
        _keys = {};
    }

    private function onKeyPressed(e:KeyboardEvent):void {
        _keys[e.keyCode] = true;
    }

    private function onKeyReleased(e:KeyboardEvent):void {
        if (e.keyCode in _keys) {
            delete _keys[e.keyCode];
        }
    }
}

internal class Actor extends Sprite {
    private var _speed:Number;

    public function Actor(size:uint, color:uint, speed:Number = 4) {
        _speed = speed;

        this.graphics.beginFill(color);
        this.graphics.drawRect(-size * 0.5, -size * 0.5, size, size);
    }

    public function get speed():Number {
        return _speed;
    }
}
相关问题