我开始学习ActionScript 3.0,我从Pascal那里得到了一些基本的编程概念。
简要解释为什么我会问我要问的问题:我不相信通过理论学习 - 例如,我正在观看关于你可以在2013年PES(专业进化足球)中做的技巧的视频并注意到我一个接一个地忘记了它们,因为视频一直在向前移动,只有在使用它们之后,它们才会在需要时自然地向我发出。这适用于任何事情,每个人都通过直接经验学习,婴儿没有语言,他不需要走路或说话的理论,只需围绕他人和尝试失败的方法,他学会走路和沟通(其中一个原因)我认为我们不需要在学校教授葡萄牙语语法,而是需要阅读和交谈。
我有这种方法来获取代码,阅读,然后删除此行和该行,看看会发生什么。 Pascal在语法上非常直观,我通过擦除,改变线条和看到发生的事情学到了很多东西。经过一段时间后,我才会寻找理论,这个理论在时间上是有意义的,而不是我脑中的随机事实。
所以我在这里问一个非常简单的代码示例 ^ _ ^“ - 就像按下两个箭头键时向左/向右移动的方格。
我正在阅读这些东西,无论如何寻找我可以抓住并开始拉动的提示。我确实看过一个看起来很简单的教程,但他没有使用我可以访问的Flash Develop,所以我没有像他在教程中那样绘制正方形的工具,以及其他东西。 (Creating a 'Copter' style game in Flash - ActionScript 3)
答案 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;
}
}