Recently in ActionScript3.0 Category
var A:Number = this.stage.stageWidth / 2;
var B:Number = this.stage.stageHeight /2;
var a:Number = 20;
var b:Number = 30;
var deg:Number = 0;
var nTime:Number = 0;
var step:Number = 0.1;
var cx:Number = this.stage.stageWidth /2;
var cy:Number = this.stage.stageHeight /2;
var xPos:Number = A * Math.sin(a * nTime + deg) + cx;
var yPos:Number = B * Math.sin(b * nTime) + cy;
this.graphics.lineStyle(1);
this.graphics.moveTo(xPos,yPos);
this.stage.addEventListener(Event.ENTER_FRAME, enterFrameAction);
function enterFrameAction(e:Event):void{
nTime+= step;
xPos = A * Math.sin(a * nTime + deg) + cx;
yPos = B * Math.sin(b * nTime) + cy;
this.graphics.lineTo(xPos,yPos);
}
Custom Arguments...)
*/
public class sjisLoader3 extends Sprite
{
public var area_txt:TextField;
public var scrollBar:UIScrollBar;
private var urlLoader:URLLoader;
private const DATA_PATH:String = "data/sjistext.txt";
public function sjisLoader3()
{
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, _loadedData);
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest(DATA_PATH));
}
private function _loadedData(e:Event)
{
trace("loaded!!uho");
var byteData:ByteArray = new ByteArray();
byteData = ByteArray(urlLoader.data);
var txtData:String = byteData.readMultiByte(byteData.length, "shift_jis");
area_txt.text = txtData;
scrollBar.update();
}
}
}
これを使えば色々な文字コードからUTF-8に変換できる見たいですね。逆はできないけど。
timer:Timer = new Timer(1000, 0); timer.addEventListener(TimerEvent.TIMER, _timerAction); timer.start();として実行すると、最初の一回目は1000ミリ秒で実行されるが、_timerAction内の処理に600ミリ秒かかると次の実行は1600ミリ秒後になってしまうということ。設定した間隔に対して正確に実行することはできないので、アニメーションであればenterFrame内で経過時間から処理すべき数値を計算すれば良いようですね。
マウスの動きに合わせて何かを行う場合、MouseMoveを使うより、onEnterFrameで前のmouseX,mouseYと比較して動かす方がスムーズなようだ。
MouseMoveで行った場合Flashのツール上ではスムーズに動作するが、ブラウザを介した途端動作が悪くなる。
MouseMoveの検出が甘いのだろうか。
onEnterFrameの場合はツール上とブラウザ上で変わりはない。
ようやく今日から本格的にAS3の勉強をすることにした。(遅
去年は研究とデザインの仕事ばっかりだったので、全然flashができなかった...orz
んで、去年アメリカ行ったときに買ってきたActionScript3.0 Cookbookを片手に進めていくのだが、Flash CS3が発売される前に執筆されたようで、Flexで開発するのが前提の書き方をされている。
Flexもいじれるようにならなきゃな...
まずサンプルにaddChildの記述がないものがあり、そこでつまづく...
これじゃ表示できねーじゃん...w
Flexで実行すればできるのだろうか?
次に、KeyboardEvent。
イベントをフォーカスしなきゃいけないから
stage.focus = this
って書きなさいって書いてあるんだけど、ここでエラーがでる。。
サンプルは明らかにSpriteを継承したclassのコンストラクタ内でstage.focusとやっているのだが、Spriteがstageのプロパティを持っていないとかそんな感じかと思ったが、どうやらstageがnullらしい。
インスタンス生成時にstageを引数で渡し、
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
とすることで解決。
サンプル実行できてないし、focusも必要なかったのですが。。てかFlashのヘルプに載ってるサンプルでも同じ現象が起きたのだが...
どういうことなんだろうか。。謎w
しかし、stage以外にKeyboardEventを設定すると失敗する。
stage以外ではKeyboardEventは設定できないのだろうか...
う~む、AS2もマスターできてない自分にとっては前途多難。。
