説明
  
   スクリプトの文法は C 言語をもとにしていますが、多くの機能が
   省略されています - SWF バイトコードマシンは、より単純であることを
   志向しています。例えば、相当手の込んだ細工をしなければ、関数のコールを
   実装することもできません。なぜなら、バイトコードの jump 命令は
   ハードコードされたオフセット値を使用しているからです。
   呼び出し元のアドレスをスタックに格納したりはしません
   - すべての関数は、戻ってくる場所を正確に知っている必要があるのです。
  
  
   結局、どんな機能が残っているのでしょう? コンパイラが理解できるトークンは
   以下のとおりです。
   
    - 
     
      break
     
    
- 
     
      for
     
    
- 
     
      continue
     
    
- 
     
      if
     
    
- 
     
      else
     
    
- 
     
      do
     
    
- 
     
      while
     
    
   データ型は存在しません。SWF アクションマシンにおいては、すべての値は
   文字列として扱われます。以下の関数が使用可能です。
   
    - 
     time()
     
- 
      
       ムービーが開始してからの経過時間を、ミリ秒 (?) で返します。
      
     
- 
     random(seed)
     
- 
      
       0 から seed までの範囲の擬似乱数を返します。
      
     
- 
     length(expr)
     
- 
      
       指定した式の長さを返します。
      
     
- 
     int(number)
     
- 
      
       指定した数値を、一番近い整数に切り下げた値を返します。
      
     
- 
     concat(expr, expr)
     
- 
      
       指定した式を連結して返します。
      
     
- 
     ord(expr)
     
- 
      
       指定した文字の ASCII コードを返します。
      
     
- 
     chr(num)
     
- 
      
       指定した ASCII コードに対応する文字を返します。
      
     
- 
     substr(string, location, length)
     
- 
      
       指定した文字列 string
 の、
       位置 location
 から始まる
       長さ length
 の部分文字列を返します。
      
     
   さらに、以下のコマンドも使用できるでしょう。
   
    - 
     duplicateClip(clip, name, depth)
     
- 
      
       指定したムービークリップ (またの名をスプライト)
       clip
 を複製します。
       新しいムービークリップの名前は name
 で、
       深度は depth
 となります。
      
     
- 
     removeClip(expr)
     
- 
      
       指定したムービークリップを削除します。
      
     
- 
     trace(expr)
     
- 
      
       指定した式をトレースログに書き込みます。ブラウザのプラグインが
       これをきちんと扱ってくれるかは疑わしいものです。
      
     
- 
     startDrag(target, lock, [left, top, right, bottom])
     
- 
      
       ムービークリップ target
 のドラッグを開始します。
       引数 lock
 で、マウスをロックするかどうか (?)
       を指定します - 0 (FALSE) あるいは 1 (TRUE) を指定します。
       オプションのパラメータでは、ドラッグする範囲のを指定します。
      
     
- 
     stopDrag()
     
- 
      
       つかれきった心を落ち着かせます。そしてムービークリップの
       ドラッグも修了させます。
      
     
- 
     callFrame(expr)
     
- 
      
       指定したフレームを関数としてコールします。
      
     
- 
     getURL(url, target, [method])
     
- 
      
       指定した URL を読み込みます。引数 target
 は、
       (たとえば "_top" や "_blank" のような) HTML ドキュメントの target
       に対応します。オプションの引数 method
 は、
       サーバに変数を返したい場合に POST あるいは GET を指定します。
      
     
- 
     loadMovie(url, target)
     
- 
      
       指定した URL を読み込みます。引数 target
 は、
       (おそらく) フレームの名前か
       あるいは特別な値 "_level0" (現在のムービーを置き換える) 、
       "_level1" (現在のムービーの前面に新しいムービーを表示する) 
       のうちのいずれかです。
      
     
- 
     nextFrame()
     
- 
      
       次のフレームに移動します。
      
     
- 
     prevFrame()
     
- 
      
       直前の (あるいは一つ前の) フレームに移動します。
      
     
- 
     play()
     
- 
      
       ムービーの再生を開始します。
      
     
- 
     stop()
     
- 
      
       ムービーの再生を停止します。
      
     
- 
     toggleQuality()
     
- 
      
       高品質/低品質を切り替えます。
      
     
- 
     stopSounds()
     
- 
      
       音声の再生を停止します。
      
     
- 
     gotoFrame(num)
     
- 
      
       フレーム番号 num
 に移動します。
       フレーム番号は 0 からはじまります。
      
     
- 
     gotoFrame(name)
     
- 
      
       name
 という名前のフレームに移動します。
       これは便利です。というのもまだフレームのラベルを追加していないからです。
      
     
- 
     setTarget(expr)
     
- 
      
       アクションのコンテキストといわれるものを設定します。
       これが何をするものなのかは実際のところよくわかりません。
      
     
   そしてもうひとつ変なものがあります。if 文や while ループの中で、
   指定したフレーム番号が読み込まれているかどうかを調べるために、
   式 frameLoaded(num) が使用可能です。ええ。そのようにいわれています。
   しかし私は実際にこれをテストしたことがなく、実際に動作するのか
   疑問に思っています。かわりに /:framesLoaded を使用するとよいでしょう。
  
  
    ムービークリップ (さぁみなさんご一緒に - またの名をスプライト)
    はプロパティをひじしています。すべてのプロパティが読み込み可能で、
    そのうちのいくつかには値を設定することも可能です。プロパティの
    一覧は以下のとおりです。
    
     - 
      
       x
      
     
- 
      
       y 
      
     
- 
      
       xScale 
      
     
- 
      
       yScale 
      
     
- 
      
       currentFrame - (読み込み専用) 
      
     
- 
      
       totalFrames - (読み込み専用) 
      
     
- 
      
       alpha - 透明度
      
     
- 
      
       visible - 1=on, 0=off (?) 
      
     
- 
      
       width - (読み込み専用) 
      
     
- 
      
       height - (読み込み専用) 
      
     
- 
      
       rotation 
      
     
- 
      
       target - (読み込み専用) (???) 
      
     
- 
      
       framesLoaded - (読み込み専用) 
      
     
- 
      
       name 
      
     
- 
      
       dropTarget - (読み込み専用) (???) 
      
     
- 
      
       url - (読み込み専用) (???) 
      
     
- 
      
       highQuality - 1=high, 0=low (?) 
      
     
- 
      
       focusRect - (???) 
      
     
- 
      
       soundBufTime - (???) 
      
     
    ということで、スプライトの x 位置を指定するには単に 
/box.x = 100;
    とすればよいわけです。なぜ box の前のスラッシュがあるのでしょう?
    これは、flash がムービー内のスプライトを Unix ファイルシステム風に
    管理しているからです - つまり、この場合 box がトップレベルに存在する
    ことになります。box という名前のスプライトがその中に biff という名前の
    スプライトを保持している場合、その x 位置を指定するには
    /box/biff.x = 100; とします。すくなくとも私はそう思っています。
    もし間違っていたら指摘してください。