<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="xionAPI" -->
<rss version="2.0">



<channel>

<title>彩音 - AIR - 研究室</title>
<link>http://air.wixion.cc/</link>
<description>彩音 - AIR - 研究室：XION -AIR-laboratory</description>
<language>ja</language>
<copyright>Copyright 2007 xion.cc</copyright>
<lastBuildDate>Wed, 25 Jun 2008 00:37:51 +0900</lastBuildDate>
<generator>xionAPI</generator>

<item>
<title>日記：彩音UNIX研究室</title>
<link>http://air.wixion.cc/diary_d_20080625.htm</link>
<description>&lt;p&gt;&lt;a href=&quot;http://unix.wixion.cc/&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;彩音UNIX研究室&lt;/a&gt; を書き始めました。&lt;/p&gt;
</description>
<pubDate>Wed, 25 Jun 2008 00:37:00 +0900</pubDate>
<guid>http://air.wixion.cc/diary_d_20080625.htm</guid>
</item>
<item>
<title>節：短形領域の衝突 containsPoint()、containsRect()、intersects()</title>
<link>http://air.wixion.cc/paragraph_326.htm</link>
<description>&lt;p&gt;containsPoint() は点と領域を比較する。指定の点が短形領域の中に入っているときtrueになる。containsRect() と intersects() は領域同士を比較する。containsRect() は領域の中に別の領域が完全に入っているとき true になり、intersects() は領域と別の領域が交差しているとき true となる。&lt;br /&gt;
以下の例は短形領域 rect1、rect2、rect3 にマウスが入っているかどうかを containsPoint() を使い調べている。領域にマウスが入っていたら領域を囲むboxスプライトを表示し、マウスが領域からでたらboxスプライトを消す。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;256&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var rect1:Rectangle = new Rectangle(100, 50, 200, 100);&lt;br /&gt;
private var rect2:Rectangle = new Rectangle(320, 20, 160, 100);&lt;br /&gt;
private var rect3:Rectangle = new Rectangle(360, 120, 150, 80);&lt;br /&gt;
private var rectList:Array = [rect1, rect2, rect3];&lt;br /&gt;
private var box:Sprite = new Sprite();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
box.graphics.lineStyle(1, 0xff0000);&lt;br /&gt;
box.graphics.drawRect(0, 0, 100, 100);&lt;br /&gt;
container.addEventListener(Event.ENTER_FRAME, enterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function enterFrame(event:Event):void {&lt;br /&gt;
var mousePoint:Point = new Point(application.mouseX, application.mouseY);&lt;br /&gt;
var isHit:Boolean = false;&lt;br /&gt;
for each (var hitzone:Rectangle in rectList) {&lt;br /&gt;
if (hitzone.containsPoint(mousePoint)) {&lt;br /&gt;
isHit = true;&lt;br /&gt;
box.x = hitzone.x;&lt;br /&gt;
box.y = hitzone.y;&lt;br /&gt;
box.width = hitzone.width;&lt;br /&gt;
box.height = hitzone.height;&lt;br /&gt;
container.addChild(box);&lt;br /&gt;
break&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
if ((contains(box)) &amp;amp;&amp;amp; (isHit != true)) {&lt;br /&gt;
container.removeChild(box);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Thu, 19 Jun 2008 04:29:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_326.htm</guid>
</item>
<item>
<title>節：短形領域の伸縮 inflate()、inflatePoint()</title>
<link>http://air.wixion.cc/paragraph_325.htm</link>
<description>&lt;p&gt;inflate() は短形領域の伸縮を行う関数である。rect1 の縦横サイズを左右に15、上下に10ずつ広げる場合、rect1.inflate(15, 10)のように実行する。結果、rect1 の幅は30、高さは20広がる。新しい短形領域が生成されるのではなく、rect1自体が変更される点に注意する。&lt;/p&gt;
例：inflate()を使って広げる
&lt;p&gt;[[[&lt;br /&gt;
var rect1:Rectangle = new Rectangle(50, 80, 200, 150);&lt;br /&gt;
rect1.inflate(15, 10);&lt;br /&gt;
trace(rect1);&lt;br /&gt;
// 出力： (x=35, y=70, w=230, h0170)&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;短形領域の伸縮は inflatePoint() でも行える。inflatePoint() は、左右上下に広げるサイズを Point データを使い一個の引数で指定する。&lt;/p&gt;
 例：inflatePoint() を使い広げる
&lt;p&gt;[[[&lt;br /&gt;
var rect1:Rectangle = new Rectangle(50, 80, 200, 150);&lt;br /&gt;
var size:Point = new Point(15, 10);&lt;br /&gt;
rect1.inflatePoint(size);&lt;br /&gt;
trace(rect1);&lt;br /&gt;
// 出力：(x=35, y=70, w=230, h=170)&lt;br /&gt;
]]]&lt;/p&gt;
 例：長方形を少しずつ大きくする
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;256&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
var rect:Rectangle = new Rectangle(250, 120, 20, 30);&lt;br /&gt;
var lineSize:uint = 3;&lt;br /&gt;
var lineColor:uint;&lt;br /&gt;
for (var i:uint = 1; i&amp;lt;=15; i++) {&lt;br /&gt;
lineColor = Math.random()*0xffffff;&lt;br /&gt;
container.graphics.lineStyle(lineSize, lineColor);&lt;br /&gt;
container.graphics.drawRect(rect.x, rect.y, rect.width, rect.height);&lt;br /&gt;
rect.inflate(10, 5);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Wed, 18 Jun 2008 03:46:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_325.htm</guid>
</item>
<item>
<title>節：短形領域の減算 intersection()</title>
<link>http://air.wixion.cc/paragraph_324.htm</link>
<description>&lt;p&gt;intersection() は短形領域の減算を行う関数である。短形領域の面積の引き算をするのではなく、短形領域が重なっている部分、交差している領域を求める。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;256&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
&lt;br /&gt;
var rect1:Rectangle = new Rectangle(100, 50, 150, 120);&lt;br /&gt;
var rect2:Rectangle = new Rectangle(150, 150, 160, 80);&lt;br /&gt;
var rect3:Rectangle = rect1.intersection(rect2);&lt;br /&gt;
var lineColor:uint = 0x000000;&lt;br /&gt;
var fillColor:uint = 0xBBBBBB;&lt;br /&gt;
&lt;br /&gt;
var box1:Sprite = new Sprite();&lt;br /&gt;
box1.graphics.lineStyle(1, lineColor);&lt;br /&gt;
box1.graphics.beginFill(fillColor);&lt;br /&gt;
box1.graphics.drawRect(rect1.x, rect1.y, rect1.width, rect1.height);&lt;br /&gt;
box1.graphics.endFill();&lt;br /&gt;
container.addChild(box1);&lt;br /&gt;
&lt;br /&gt;
var box2:Sprite = new Sprite();&lt;br /&gt;
box2.graphics.lineStyle(1, lineColor);&lt;br /&gt;
box2.graphics.beginFill(fillColor);&lt;br /&gt;
box2.graphics.drawRect(rect2.x, rect2.y, rect2.width, rect2.height);&lt;br /&gt;
box2.graphics.endFill();&lt;br /&gt;
container.addChild(box2);&lt;br /&gt;
&lt;br /&gt;
var box3:Sprite = new Sprite();&lt;br /&gt;
box3.graphics.lineStyle(2, lineColor);&lt;br /&gt;
box3.graphics.drawRect(rect3.x, rect3.y, rect3.width, rect3.height);&lt;br /&gt;
container.addChild(box3);&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Wed, 18 Jun 2008 01:55:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_324.htm</guid>
</item>
<item>
<title>節：短形領域の加算 union()</title>
<link>http://air.wixion.cc/paragraph_323.htm</link>
<description>&lt;p&gt;union() は短形領域の加算を行う。短形領域の面積の足し算をするのではなく、互いの領域を完全に含む１つの広い領域を新規に生成する。ここの短形領域が狭くても、対角線上にはなれた位置にあるほど加算した結果は広い領域となる。&lt;br /&gt;
以下の例では、rect1 と rect2 を union() を使い加算した短形領域 rect3 と生成している。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;256&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
&lt;br /&gt;
var rect1:Rectangle = new Rectangle(100, 50, 150, 120);&lt;br /&gt;
var rect2:Rectangle = new Rectangle(150, 150, 160, 80);&lt;br /&gt;
var rect3:Rectangle = rect1.union(rect2);&lt;br /&gt;
var lineColor:uint = 0x000000;&lt;br /&gt;
var fillColor:uint = 0xBBBBBB;&lt;br /&gt;
&lt;br /&gt;
var box1:Sprite = new Sprite();&lt;br /&gt;
box1.graphics.lineStyle(1, lineColor);&lt;br /&gt;
box1.graphics.beginFill(fillColor);&lt;br /&gt;
box1.graphics.drawRect(rect1.x, rect1.y, rect1.width, rect1.height);&lt;br /&gt;
box1.graphics.endFill();&lt;br /&gt;
container.addChild(box1);&lt;br /&gt;
&lt;br /&gt;
var box2:Sprite = new Sprite();&lt;br /&gt;
box2.graphics.lineStyle(1, lineColor);&lt;br /&gt;
box2.graphics.beginFill(fillColor);&lt;br /&gt;
box2.graphics.drawRect(rect2.x, rect2.y, rect2.width, rect2.height);&lt;br /&gt;
box2.graphics.endFill();&lt;br /&gt;
container.addChild(box2);&lt;br /&gt;
&lt;br /&gt;
var box3:Sprite = new Sprite();&lt;br /&gt;
box3.graphics.lineStyle(2, lineColor);&lt;br /&gt;
box3.graphics.drawRect(rect3.x, rect3.y, rect3.width, rect3.height);&lt;br /&gt;
container.addChild(box3);&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Mon, 16 Jun 2008 21:21:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_323.htm</guid>
</item>
<item>
<title>節：短形領域を扱う Rectangleクラス</title>
<link>http://air.wixion.cc/paragraph_322.htm</link>
<description>&lt;p&gt;Rectangleクラスは短形領域（長方形）を一個の値として扱う。Rectangleクラスでは、短形領域の４点の座標でなく、左上角の座標と幅、高さで短形領域を表す。&lt;/p&gt;
例：左上角(50, 80)、幅200、高さ150の場合
&lt;p&gt;[[[&lt;br /&gt;
var rect1:Rectangle = new Rectangle(50, 80, 200, 150);&lt;br /&gt;
trace (rect1);&lt;br /&gt;
// 出力： (x=50, y=80, w=200, h=500)&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;Rectangleクラスには短形領域の座標を扱うためのプロパティやメソッド用意されている。&lt;/p&gt;
例：短形領域の座標、幅、高さ
&lt;p&gt;[[[&lt;br /&gt;
var rect1:Rectangle = new Rectangle(50, 80, 200, 150);&lt;br /&gt;
trace (rect1.top, rect1.left, rect1.right, rect1.bottom);&lt;br /&gt;
// 出力：80 50 250 230&lt;br /&gt;
trace (rect1.topLeft, rect1.bottomRight);&lt;br /&gt;
// 出力： (x=50, y=80) (x=250, y=230)&lt;br /&gt;
trace (rect1.width, rect1.height);&lt;br /&gt;
// 出力：200 150&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;サイズを示す size プロパティは width と height の Point データになる。対角線の長さはこの値の length で得られる。&lt;/p&gt;
例：短形領域のサイズと対角線の長さ
&lt;p&gt;[[[&lt;br /&gt;
var rectSize:Point = rect1.size;&lt;br /&gt;
trace (rectSize);&lt;br /&gt;
// 出力： (x=200, y=150)&lt;br /&gt;
trace (rectSize.length);&lt;br /&gt;
// 出力： 250&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Mon, 16 Jun 2008 20:33:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_322.htm</guid>
</item>
<item>
<title>節：ベクトルの向きと大きさ polar()</title>
<link>http://air.wixion.cc/paragraph_321.htm</link>
<description>&lt;p&gt;以下の例は Point.polar() と offset() を使い放射状に線を描くものである。&lt;br /&gt;
Point.polar(len, angle) は、点までの長さlenと角度 angle を指定し、点の x, y を求める関数である。角度 angle は x軸から時計回り角度（ラジアン）で測る。&lt;br /&gt;
offset() は点の座標の基準点を移動させるメソッドである。Point.polar() で得られる点の座標は原点 (0, 0) を基準として座標であるため、 offset() を使い放射状に線を延ばす中心点 center の位置に基準点を移動させる。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;256&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
&lt;br /&gt;
var pt:Point;&lt;br /&gt;
var center:Point = new Point (application.width/2, application.height/2);&lt;br /&gt;
var len:uint;&lt;br /&gt;
var radian:Number = 4*Math.PI/180;&lt;br /&gt;
var angle:Number = 0;&lt;br /&gt;
var lineSize:uint = 3;&lt;br /&gt;
var lineColor:uint;&lt;br /&gt;
while (angle &amp;lt;= 2 * Math.PI) {&lt;br /&gt;
lineColor = Math.random()*0xffffff;&lt;br /&gt;
len = Math.round(Math.random()*195);&lt;br /&gt;
angle += radian;&lt;br /&gt;
pt = Point.polar(len, angle);&lt;br /&gt;
pt.offset(center.x, center.y);&lt;br /&gt;
container.graphics.lineStyle(lineSize, lineColor);&lt;br /&gt;
container.graphics.moveTo(center.x, center.y);&lt;br /&gt;
container.graphics.lineTo(pt.x, pt.y);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Mon, 16 Jun 2008 17:15:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_321.htm</guid>
</item>
<item>
<title>日記：ベクトルの向きと大きさ</title>
<link>http://air.wixion.cc/diary_d_20080613.htm</link>
<description>&lt;p&gt;&lt;a href=&quot;http://air.wixion.cc/paragraph_320.htm&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;ベクトルの向きと大きさ normalize()&lt;/a&gt;&lt;/p&gt;
</description>
<pubDate>Fri, 13 Jun 2008 08:41:00 +0900</pubDate>
<guid>http://air.wixion.cc/diary_d_20080613.htm</guid>
</item>
<item>
<title>節：ベクトルの向きと大きさ normalize()</title>
<link>http://air.wixion.cc/paragraph_320.htm</link>
<description>&lt;p&gt;normalize() は、ベクトルの向きはそのままでベクトルの大きさを変更するメソッドである。以下の例ではフィールドをクリックするとその方向にインスタンスが移動する。どの向きに進む場合も移動の速度は speed で指定した速さになる。&lt;br /&gt;
インスタンス座標とクリックされたポイントのグローバル座標から進む方向のベクトルを判定し、ベクトルサイズを normalize() を使い speed の大きさに変換する。mc1 が進む方向に向くように Math.atan2() で２点間の角度を計算し、インスタンスを回転させる。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;256&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var mc1:Sprite = new Sprite();&lt;br /&gt;
private var vector:Point = new Point();&lt;br /&gt;
private var speed:int = 10;&lt;br /&gt;
private var pt1:Point;&lt;br /&gt;
private var pt2:Point;&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
mc1.graphics.beginFill(0xffffff);&lt;br /&gt;
mc1.graphics.moveTo(10,0);&lt;br /&gt;
mc1.graphics.lineTo(-10, 10);&lt;br /&gt;
mc1.graphics.lineTo(-10, -10);&lt;br /&gt;
mc1.graphics.endFill();&lt;br /&gt;
container.addChild(mc1);&lt;br /&gt;
application.addEventListener(MouseEvent.CLICK, onClick);&lt;br /&gt;
mc1.addEventListener(Event.ENTER_FRAME, enterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function onClick(event:MouseEvent):void {&lt;br /&gt;
pt1 = new Point(mc1.x, mc1.y);&lt;br /&gt;
pt2 = new Point(event.stageX, event.stageY);&lt;br /&gt;
vector = pt2.subtract(pt1);&lt;br /&gt;
vector.normalize(speed);&lt;br /&gt;
mc1.rotation = Math.atan2(vector.y, vector.x)*180/Math.PI;&lt;br /&gt;
}&lt;br /&gt;
private function enterFrame(event:Event):void {&lt;br /&gt;
mc1.x += vector.x;&lt;br /&gt;
mc1.y += vector.y;&lt;br /&gt;
if (mc1.x &amp;lt; 0) {&lt;br /&gt;
mc1.x = application.width;&lt;br /&gt;
} else if (mc1.x &amp;gt;application.width) {&lt;br /&gt;
mc1.x = 0;&lt;br /&gt;
}&lt;br /&gt;
if (mc1.y &amp;lt; 0) {&lt;br /&gt;
mc1.y = application.height;&lt;br /&gt;
} else if (mc1.y &amp;gt; application.height) {&lt;br /&gt;
mc1.y = 0;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Fri, 13 Jun 2008 08:40:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_320.htm</guid>
</item>
<item>
<title>節：ベクトルの向きと大きさ interpolate()</title>
<link>http://air.wixion.cc/paragraph_319.htm</link>
<description>&lt;p&gt;Point.interpolate() は点pt1 と点pt2 の間にある点を見つける。この関数は pt1 kara&lt;br /&gt;
pt2 の間に点を打ちたい場合や点を移動させたい場合に利用する。 Point.interpolate(pt1, pt2, f)のように３つの引数をとり、f の値（1〜0）により、pt1〜pt2 間の位置を指定する。f が 1 のときは、pt1 の位置となり、0 に近いほどpt2 に近づく。&lt;br /&gt;
以下の例は pt1 から pt2 に向けて 10個のスプライトを生成する。pt1 と pt2 の間の点の位置を Point.interpolate() で計算している。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;256&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
var pt1:Point = new Point(50, 50);&lt;br /&gt;
var pt2:Point = new Point(450, 200);&lt;br /&gt;
var pt3:Point;&lt;br /&gt;
var f:Number;&lt;br /&gt;
for (var i:int=0; i&amp;lt;=10; i++) {&lt;br /&gt;
f = (10-i) / 10;&lt;br /&gt;
pt3 = Point.interpolate(pt1, pt2, f);&lt;br /&gt;
var circle:Sprite = new Sprite();&lt;br /&gt;
circle.graphics.beginFill(0xFFFFFF);&lt;br /&gt;
circle.graphics.drawCircle(pt3.x, pt3.y, 10);&lt;br /&gt;
container.addChild(circle);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Fri, 13 Jun 2008 00:24:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_319.htm</guid>
</item>
<item>
<title>節：ベクトルの加算減算 add()、subtract()、distance()、equals()</title>
<link>http://air.wixion.cc/paragraph_318.htm</link>
<description>&lt;p&gt;点と点の加算は add()、減算は subtract() で計算する。点と点の加算と減算は進む方向と大きさを表すベクトル計算で利用できる。以下の例では vector1 と vector2 をの値は変化しない。&lt;br /&gt;
[[[&lt;br /&gt;
var vector1:Point = new Point(5, 20);&lt;br /&gt;
var vector2:Point = new Point(0, 10);&lt;br /&gt;
var vector3:Point = new vector1.add(vectror2);&lt;br /&gt;
var vector4:Point = new vactor1.subtract(vector2);&lt;br /&gt;
trace (vector3, vector4);&lt;br /&gt;
// 出力：(x=5, y=30) (x=5, y=10)&lt;br /&gt;
trace (vector3.x);&lt;br /&gt;
// 出力：5&lt;br /&gt;
trace (vector3.y);&lt;br /&gt;
// 出力： 30&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;点と点の減算の結果は天童市の水平方向距離、垂直方向距離を示している。点と点の直線距離を求めたい場合は Point.distance() で計算出来る。計算結果は必ず0または正の値になる。つまり、２点を結ぶベクトルの大きさを示す。 Point.distance(pt1, pt2) と Point.distance(pt2, pt1) は同じ値になる。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
var pt1:point = new Point(50, 100);&lt;br /&gt;
var pt2:point = new Point(200, 250);&lt;br /&gt;
var d:Number = Point.distance(pt1, pt2);&lt;br /&gt;
trace (d);&lt;br /&gt;
// 出力：212.13203435596427&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;Point.equals() は２点が等しいかどうかを調べる関数である。２点が等しいときに true、等しくないときに false となる。&lt;/p&gt;
[[[&lt;br /&gt;
var pt1:Point = new Point(50, 100);&lt;br /&gt;
var pt2:Point = new Point(200, 250);&lt;br /&gt;
if (pt1.equals(pt2)) {&lt;br /&gt;
trace(&amp;quot;同じ位置&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
trace(&amp;quot;違う位置&amp;quot;);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
</description>
<pubDate>Thu, 12 Jun 2008 23:49:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_318.htm</guid>
</item>
<item>
<title>節：点を扱う Pointクラス</title>
<link>http://air.wixion.cc/paragraph_317.htm</link>
<description>&lt;p&gt;Pointクラスを利用すると、点の座標を一個の値として扱えて便利である。例えば、x=60, y=110の点pt1の座標は次のように表せる。&lt;br /&gt;
[[[&lt;br /&gt;
var pt1:Point = new Point(60, 110);&lt;br /&gt;
trace (pt1);&lt;br /&gt;
// 出力： (x=60, y=110)&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;Pointクラスには点の座標を扱うためのプロパティやメソッドがある。原点から（0,0）点までの長さは計算しなくてもlengthプロパティで簡単に取得出来る。例えば、点 pt1 までの距離は pt1.length になる。この長さは点 pt1 が（x=-45, y=-100）のように負の領域にあったとしても正の値になる。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
var pt1:Point = new Point(60, 110);&lt;br /&gt;
trace (pt1.length);&lt;br /&gt;
// 出力：120.83045973594572&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Wed, 11 Jun 2008 06:18:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_317.htm</guid>
</item>
<item>
<title>節：MouseEventクラスのイベント通知からマウスのローカル座標を取得する</title>
<link>http://air.wixion.cc/paragraph_316.htm</link>
<description>&lt;p&gt;MouseEventクラスのイベント通知を受けるハンドラを使用した場合、クリックした位置のローカル座標がeventオブジェクトの localX, localY プロパティとして送られる。&lt;br /&gt;
以下の例では mc1インスタンスをクリックするとその位置に mc1 の中に入っている mc2 を移動させる。 mc2 の座標は mc1 を基準としたローカル座標で設定する必要があるので、eventオブジェクトの localX, localY プロパティを利用する。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;192&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var mc1:Sprite = new Sprite();&lt;br /&gt;
private var mc2:Sprite = new Sprite();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
mc1.graphics.beginFill(0x000000);&lt;br /&gt;
mc1.graphics.drawRect(0,0,250,120);&lt;br /&gt;
mc1.x = 150;&lt;br /&gt;
mc1.y = 40;&lt;br /&gt;
container.addChild(mc1);&lt;br /&gt;
mc2.graphics.beginFill(0xffcc00);&lt;br /&gt;
mc2.graphics.drawCircle(0,0,40);&lt;br /&gt;
mc1.addChild(mc2);&lt;br /&gt;
mc1.addEventListener(MouseEvent.CLICK, click);&lt;br /&gt;
}&lt;br /&gt;
private function click(event:MouseEvent):void {&lt;br /&gt;
mc2.x = event.localX;&lt;br /&gt;
mc2.y = event.localY;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Wed, 11 Jun 2008 06:11:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_316.htm</guid>
</item>
<item>
<title>節：マウスの座標</title>
<link>http://air.wixion.cc/paragraph_315.htm</link>
<description>&lt;p&gt;マウスの座標もグローバル座標、ローカル座標という概念で考える。&lt;br /&gt;
Flexでのマウスのグローバル座標は application.mouseX, application.mouseY で取得する。&lt;br /&gt;
各オブジェクトからのローカル座標は、mc1.mouseX, mc1.mouseY という風に取得する。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;192&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Label x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; id=&amp;quot;mc1Label&amp;quot; text=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var mc1:Sprite = new Sprite();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
mc1.graphics.beginFill(0x000000);&lt;br /&gt;
mc1.graphics.drawRect(0,0,250,120);&lt;br /&gt;
mc1.x = 150;&lt;br /&gt;
mc1.y = 40;&lt;br /&gt;
container.addChild(mc1);&lt;br /&gt;
application.addEventListener(Event.ENTER_FRAME, enterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function enterFrame(event:Event):void {&lt;br /&gt;
mc1Label.text = &amp;quot;マウスのグローバル座標は：x=&amp;quot; + application.mouseX + &amp;quot;,y=&amp;quot; + application.mouseY&lt;br /&gt;
+ &amp;quot;／mc1からみたマウスのローカル座標は：x=&amp;quot; + mc1.mouseX + &amp;quot;,y=&amp;quot; + mc1.mouseY;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Wed, 11 Jun 2008 06:02:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_315.htm</guid>
</item>
<item>
<title>日記：グローバル座標とローカル座標</title>
<link>http://air.wixion.cc/diary_d_20080608.htm</link>
<description>&lt;p&gt;グローバル座標とローカル座標についての記述を追加。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://air.wixion.cc/paragraph_314.htm&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;グローバル座標、ローカル座標&lt;/a&gt;&lt;/p&gt;
</description>
<pubDate>Sun, 08 Jun 2008 05:00:00 +0900</pubDate>
<guid>http://air.wixion.cc/diary_d_20080608.htm</guid>
</item>
<item>
<title>節：グローバル座標、ローカル座標</title>
<link>http://air.wixion.cc/paragraph_314.htm</link>
<description>&lt;p&gt;座標にはグローバル座標とローカル座標がある。グローバル座標はアプリケーションの左上角を基準と下座標で、ローカル座標はスプライトやムービークリップの中心点を原点とした座標である。ムービークリップの中にムービークリップインスタンスが入っている場合、入れ子で入っているインスタンスの座標は親のムービークリップの中心点を座標の原点としたローカル座標である。&lt;/p&gt;
&lt;p&gt;ローカル座標をグローバル座標に変換するには localToGlobal関数で、 mc.localToGlobal(Point) のようにする。引数はPointクラスのオブジェクトである必要がある。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;192&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Label x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; id=&amp;quot;mc1Label&amp;quot; text=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var mc1:Sprite = new Sprite();&lt;br /&gt;
private function init():void {&lt;br /&gt;
container.graphics.beginFill(0x000000);&lt;br /&gt;
container.graphics.drawRect(0,0,250,120);&lt;br /&gt;
container.x = 50;&lt;br /&gt;
container.y = 40;&lt;br /&gt;
addChild(container);&lt;br /&gt;
mc1.graphics.beginFill(0xFFFFFF);&lt;br /&gt;
mc1.graphics.drawCircle(0,0,16);&lt;br /&gt;
mc1.x = 150;&lt;br /&gt;
mc1.y = 60;&lt;br /&gt;
container.addChild(mc1);&lt;br /&gt;
var mc1Point:Point = new Point (mc1.x, mc1.y);&lt;br /&gt;
var mc1GPoint:Point = mc1.localToGlobal(mc1Point);&lt;br /&gt;
mc1Label.text = &amp;quot;グローバル座標は：&amp;quot; + mc1GPoint + &amp;quot;／ローカル座標は：&amp;quot; + mc1Point;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;br /&gt;
逆にグローバル座標をローカル座標に変換する場合は globalToLocal() 関数を利用する。&lt;/p&gt;
</description>
<pubDate>Sun, 08 Jun 2008 04:57:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_314.htm</guid>
</item>
<item>
<title>節：値を順に取り出す for each .. in</title>
<link>http://air.wixion.cc/paragraph_312.htm</link>
<description>for .. in がプロパティ名またはインデックス番号を取り出すのに対し、for each .. in の書式は配列や配列オブジェクトの値を取り出す。以下の例は配列の値を変数vに取り出している。&lt;br /&gt;
[[[&lt;br /&gt;
var vList:Array = [&amp;quot;f&amp;quot;, &amp;quot;l&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;s&amp;quot;, &amp;quot;h&amp;quot;];&lt;br /&gt;
for each (var v:String in vList) {&lt;br /&gt;
trace (v);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
 出力結果
&lt;p&gt;[[[&lt;br /&gt;
f &lt;br /&gt;
l &lt;br /&gt;
a &lt;br /&gt;
s &lt;br /&gt;
h &lt;br /&gt;
]]]&lt;/p&gt;
以下の例では myObj の値を変数 v に取り出している。&lt;br /&gt;
[[[&lt;br /&gt;
var myObj:Object = {&amp;quot;id&amp;quot;:&amp;quot;c007&amp;quot;, &amp;quot;name&amp;quot;:&amp;quot;クリス&amp;quot;, &amp;quot;size&amp;quot;:235};&lt;br /&gt;
for each (var v:* in myObj) {&lt;br /&gt;
trace(v);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
出力結果
&lt;p&gt;[[[&lt;br /&gt;
235&lt;br /&gt;
c007&lt;br /&gt;
クリス&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Fri, 06 Jun 2008 03:19:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_312.htm</guid>
</item>
<item>
<title>節：インデックス番号やプロパティ名を順に取り出す for .. in</title>
<link>http://air.wixion.cc/paragraph_311.htm</link>
<description>&lt;p&gt;for .. in の書式は配列および配列オブジェクトからインデックス番号やプロパティ名を順に取り出すときに利用する。変数に入る値に注意すること。&lt;br /&gt;
対象が配列の場合、配列のインデックス番号を取り出す。変数に入る番号のデータ型はStringである点に注意すること。配列の値を取り出したい場合、for each .. in のほうが合理的である。&lt;br /&gt;
以下の例は配列vList から値を取り出している。vListの長さは５なので、処理を繰り返すごとに、&amp;quot;0&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; のインデックス番号が no  に入る。no はストリング型であるため、int(no) で数値に変換し、indexに格納する。このindexを使い配列の値を順に取り出す。&lt;/p&gt;
[[[&lt;br /&gt;
var vList:Array = [&amp;quot;f&amp;quot;, &amp;quot;l&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;s&amp;quot;, &amp;quot;h&amp;quot;];&lt;br /&gt;
var no:String;&lt;br /&gt;
var index:uint;&lt;br /&gt;
for (no in vList) {&lt;br /&gt;
index = int(no);&lt;br /&gt;
trace (no, vList[index]);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
 出力結果
&lt;p&gt;[[[&lt;br /&gt;
0 f&lt;br /&gt;
1 l&lt;br /&gt;
2 a&lt;br /&gt;
3 s&lt;br /&gt;
4 h&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;対象が配列オブジェクトの場合、オブジェクトのプロパティ名が順に取り出される。以下の例では myObj を走査する。変数 prop に myObj のプロパティ名が入るので、これを使いプロパティの値を取り出す。&lt;/p&gt;
[[[&lt;br /&gt;
var myObj:Object = {&amp;quot;id&amp;quot;:&amp;quot;c007&amp;quot;, &amp;quot;name&amp;quot;:&amp;quot;クリス&amp;quot;, &amp;quot;size&amp;quot;:235};&lt;br /&gt;
var prop:String;&lt;br /&gt;
var v:*;&lt;br /&gt;
for (prop in myObj) {&lt;br /&gt;
v = myObj[prop];&lt;br /&gt;
trace (prop, v);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
 出力結果
&lt;p&gt;[[[&lt;br /&gt;
size 235&lt;br /&gt;
id c007&lt;br /&gt;
name クリス&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Fri, 06 Jun 2008 02:59:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_311.htm</guid>
</item>
<item>
<title>節：配列のインデックスを順に取り出す</title>
<link>http://air.wixion.cc/paragraph_310.htm</link>
<description>&lt;p&gt;配列からすべての値を１つずつ取り出し、処理を行うときは、some()、every()、filter()、map()、forEach()などの関数を利用すると便利だ。&lt;/p&gt;
[[[&lt;br /&gt;
var myList:Array = [&amp;quot;a&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot;i&amp;quot;, &amp;quot;o&amp;quot;, &amp;quot;n&amp;quot;];&lt;br /&gt;
var cnt:uint = myList.length;&lt;br /&gt;
var i:uint;&lt;br /&gt;
for (i = 0; i &amp;lt; cnt; i++) {&lt;br /&gt;
var char:String = myList[i];&lt;br /&gt;
trace(i, char);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
 出力結果
&lt;p&gt;[[[&lt;br /&gt;
0 a&lt;br /&gt;
1 c&lt;br /&gt;
2 t&lt;br /&gt;
3 i&lt;br /&gt;
4 o&lt;br /&gt;
5 n&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;次の例は配列の値を後ろから逆順に取り出している。この例ではカウンタとして使う変数 i が for を抜ける直前にマイナスになってしまうので、 i のデータ型は uint でなく int でなくてはならない。&lt;/p&gt;
[[[&lt;br /&gt;
var myList:Array = [&amp;quot;a&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot;i&amp;quot;, &amp;quot;o&amp;quot;, &amp;quot;n&amp;quot;];&lt;br /&gt;
var cnt:uint = myList.length;&lt;br /&gt;
var i:int;&lt;br /&gt;
for (i = cnt - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
var char:String = myList[i];&lt;br /&gt;
trace (i, char);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
 出力結果
&lt;p&gt;[[[&lt;br /&gt;
5 n&lt;br /&gt;
4 o&lt;br /&gt;
3 i&lt;br /&gt;
2 t&lt;br /&gt;
1 c&lt;br /&gt;
0 a&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Fri, 06 Jun 2008 01:11:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_310.htm</guid>
</item>
<item>
<title>節：配列の値を使って指定のメソッドを実行する forEach()</title>
<link>http://air.wixion.cc/paragraph_309.htm</link>
<description>&lt;p&gt;forEach() は配列の値を引数にして指定のメソッドを実行する。以下の例では配列に５つの縁の座標、半径、線の太さ、線の色を指定したデータが格納されている。このデータを１つずつ makeCircle() に渡し、５つの円スプライトを生成する。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;320&amp;quot; height=&amp;quot;250&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
var data1:Object = {x:50, y:100, r:40, ls:15, lc:0xFFCC00};&lt;br /&gt;
var data2:Object = {x:100, y:150, r:50, ls:20, lc:0xFFCCFF};&lt;br /&gt;
var data3:Object = {x:130, y:140, r:100, ls:10, lc:0x00CCCC}&lt;br /&gt;
var data4:Object = {x:220, y:160, r:40, ls:30, lc:0x0055BB};&lt;br /&gt;
var data5:Object = {x:250, y:100, r:40, ls:20, lc:0x55FF55};&lt;br /&gt;
var circleDateList:Array = [data1, data2, data3, data4, data5];&lt;br /&gt;
circleDateList.forEach(makeCircle);&lt;br /&gt;
}&lt;br /&gt;
private function makeCircle (element:*, index:int, arr:Array):void {&lt;br /&gt;
var dateObj:Object = element;&lt;br /&gt;
var cx:int = dateObj.x;&lt;br /&gt;
var cy:int = dateObj.y;&lt;br /&gt;
var cr:int = dateObj.r;&lt;br /&gt;
var lineSize:int = dateObj.ls;&lt;br /&gt;
var lineColor:int = dateObj.lc;&lt;br /&gt;
var circle:Sprite = new Sprite();&lt;br /&gt;
circle.graphics.lineStyle(lineSize, lineColor);&lt;br /&gt;
circle.graphics.drawCircle(cx,cy,cr);&lt;br /&gt;
container.addChild(circle);&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Thu, 05 Jun 2008 23:17:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_309.htm</guid>
</item>
<item>
<title>節：配列の値を指定の関数で変換する map()</title>
<link>http://air.wixion.cc/paragraph_308.htm</link>
<description>&lt;p&gt;map() は配列のすべての値を指定の関数で変換し、新しい値の配列を生成する。元の配列は変更されない。&lt;br /&gt;
以下の例は値が２ならば002、43ならば043のように三桁の数字に変換する関数 maezero() を使い、配列 noList のすべての値を３桁の数字に変換した新しい配列 zeroNoList を生成している。&lt;/p&gt;
[[[&lt;br /&gt;
function meazero(element:*, index:int, arr:Array):String {&lt;br /&gt;
var keta:uint = 3;&lt;br /&gt;
var no:uint = element;&lt;br /&gt;
var zero:uint = Math.pow(10, keta);&lt;br /&gt;
var zeroNo:String = String(zero+no);&lt;br /&gt;
zeroNo = zeroNo.substr(1, keta);&lt;br /&gt;
return zeroNo;&lt;br /&gt;
}&lt;p&gt;var noList:Array = [2, 43, 5, 121, 65];&lt;br /&gt;
var zeroNoList:Array = noList.map(maezero);&lt;br /&gt;
trace(zeroNoList);&lt;br /&gt;
// 出力： 002, 043, 005, 121, 065&lt;br /&gt;
]]]&lt;/p&gt;
&lt;p&gt;以下の例ではアルファベットの一文字目だけを大文字に、他は小文字にする関数capUpperを使い、配列oldListに入っている文字を変換し、新しく配列newListを生成している。&lt;/p&gt;
[[[&lt;br /&gt;
function capUpper(element:*, index:int, arr:Array):String {&lt;br /&gt;
var myString:String = element;&lt;br /&gt;
var cap:String = myString.charAt(0);&lt;br /&gt;
var other:String = myString.substring(1);&lt;br /&gt;
var newString:String = cap.toUpperCase()+other.toLowerCase();&lt;br /&gt;
return newString;&lt;br /&gt;
}&lt;p&gt;var oldList:Array = [&amp;quot;yellow&amp;quot;, &amp;quot;RED&amp;quot;, &amp;quot;s-Class&amp;quot;];&lt;br /&gt;
var newList:Array = oldList.map(capUpper);&lt;br /&gt;
trace (newList);&lt;br /&gt;
// 出力： Yellow, Red, S-class&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Thu, 05 Jun 2008 02:41:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_308.htm</guid>
</item>
<item>
<title>節：配列にフィルタをかけて新しい配列を作る filter()</title>
<link>http://air.wixion.cc/paragraph_307.htm</link>
<description>&lt;p&gt;filter() は配列にフィルタをかけ、指定の条件に合致した値だけを取り出し、新しい配列を作る。フィルタの条件は Boolean値で返す関数でなくてはならない。&lt;/p&gt;
&lt;p&gt;以下の例は配列 students の生徒オブジェクトのpoint プロパティを調べ、pointが80以上の生徒のみの配列 passStudents を生成する。&lt;/p&gt;
[[[&lt;br /&gt;
function isPass(element:*, index:int, arr:Array):Boolean {&lt;br /&gt;
var u:uint = element.point;&lt;br /&gt;
var pass:Boolean = (v&amp;gt;=80);&lt;br /&gt;
return pass;&lt;br /&gt;
}var st1:Object = {name:&amp;quot;鈴木&amp;quot;, point:59};&lt;br /&gt;
var st2:Object = {name:&amp;quot;高橋&amp;quot;, point:87};&lt;br /&gt;
var st3:Object = {name:&amp;quot;中村&amp;quot;, point:81};&lt;br /&gt;
var st4:Object = {name:&amp;quot;田中&amp;quot;, point:65};&lt;br /&gt;
var st5:Object = {name:&amp;quot;井上&amp;quot;, point:93};&lt;br /&gt;
var students:Array = [st1, st2, st3, st4, st5];&lt;br /&gt;
var passStudents:Array = students.filter(isPass);&lt;br /&gt;
for (var i:uint = 0; i &amp;lt; passStudents.length; i++) {&lt;br /&gt;
var stObj:Object = passStudents[i];&lt;br /&gt;
trace(stObj.name, stObj.point);&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
出力結果
&lt;p&gt;[[[&lt;br /&gt;
高橋 87&lt;br /&gt;
中村 81&lt;br /&gt;
井上 93&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Wed, 04 Jun 2008 23:38:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_307.htm</guid>
</item>
<item>
<title>節：配列の値をチェックする some() every()</title>
<link>http://air.wixion.cc/paragraph_306.htm</link>
<description>&lt;p&gt;some()、every() は配列のすべての値を指定の関数でテストし、その結果が true なのか false なのかを返す。some() は一つでもテスト結果が true ならば true を、すべてのテスト結果が false ならば false を返す。every() はすべてのテスト結果が true のとき true を、一つでもfalseがある場合 false を返す。引数として指定する関数は、引数を Boolean値 で返す関数でなくてはならない。関数を引数にする場合、some(hoge) のように括弧をつけない関数名だけで指定する。&lt;/p&gt;
&lt;p&gt;some()、every() で引数に指定する関数は、以下の例で示すように element、index、arr の３つのパラメータが送られる。&lt;/p&gt;
[[[&lt;br /&gt;
function isPlus(element:*, index:int, arr:Array):Boolean {&lt;br /&gt;
return element &amp;gt; 0;&lt;br /&gt;
}&lt;p&gt;var listA:Array = [5,2,3,8];&lt;br /&gt;
var listB:Array = [4,3,9,-6];&lt;br /&gt;
trace (listA.some(isPlus);  // 出力：true&lt;br /&gt;
trace (listB.some(isPlus);  // 出力：true&lt;br /&gt;
trace (listA.every(isPlus);  // 出力：true&lt;br /&gt;
trace (listB.every(isPlus);  //  出力：false&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Wed, 04 Jun 2008 23:14:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_306.htm</guid>
</item>
<item>
<title>節：万有引力の公式の応用 その１</title>
<link>http://air.wixion.cc/paragraph_270.htm</link>
<description>
cc.xion.Star.as
[[[&lt;br /&gt;
package cc.xion {&lt;br /&gt;
import flash.display.Sprite;&lt;br /&gt;
public class Star extends Sprite {&lt;br /&gt;
public var nRadius:Number;&lt;br /&gt;
public var uColor:int;&lt;br /&gt;
public var nAlpha:Number;&lt;br /&gt;
public var nSpeedX:Number = 0;&lt;br /&gt;
public var nSpeedY:Number = 0;&lt;br /&gt;
public var nMass:Number = 1;&lt;br /&gt;
public function Star(nRadius:Number, uColor:uint = 0xFFFFFF, nAlpha:Number = 1) {&lt;br /&gt;
this.nRadius = nRadius;&lt;br /&gt;
this.uColor = uColor;&lt;br /&gt;
this.nAlpha = nAlpha;&lt;br /&gt;
graphics.beginFill(uColor, nAlpha);&lt;br /&gt;
graphics.drawCircle(0, 0, nRadius);&lt;br /&gt;
graphics.endFill();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
メインソース
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;550&amp;quot; height=&amp;quot;400&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
import cc.xion.Star;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var sun:Star = new Star(5, 0xffffff, 1);&lt;br /&gt;
private var hoshi:Star = new Star(1, 0xffffff, 1);&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
container.addChild(sun);&lt;br /&gt;
sun.x = application.width / 2;&lt;br /&gt;
sun.y = application.height / 2;&lt;br /&gt;
sun.nMass = 1000;&lt;br /&gt;
container.addChild(hoshi);&lt;br /&gt;
hoshi.x = application.width / 2 - 100;&lt;br /&gt;
hoshi.y = application.height / 2;&lt;br /&gt;
hoshi.nSpeedX = 2;&lt;br /&gt;
hoshi.nSpeedY = 2;&lt;br /&gt;
hoshi.nMass = 1;&lt;br /&gt;
application.addEventListener(Event.ENTER_FRAME, onEnterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function onEnterFrame(event:Event):void {&lt;br /&gt;
hoshi.x += hoshi.nSpeedX;&lt;br /&gt;
hoshi.y += hoshi.nSpeedY;&lt;br /&gt;
gravitate(hoshi, sun);&lt;br /&gt;
}&lt;br /&gt;
private function gravitate(starA:Star, starB:Star):void {&lt;br /&gt;
var dx:Number = starB.x - starA.x;&lt;br /&gt;
var dy:Number = starB.y - starA.y;&lt;br /&gt;
var dist2:Number = dx*dx+dy*dy;&lt;br /&gt;
var force:Number = starA.nMass*starB.nMass/dist2;&lt;br /&gt;
var rad:Number = Math.atan2(dy,dx);&lt;br /&gt;
var forceX:Number = force * Math.cos(rad);&lt;br /&gt;
var forceY:Number = force * Math.sin(rad);&lt;br /&gt;
starA.nSpeedX += forceX;&lt;br /&gt;
starA.nSpeedY += forceY;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;


参考文献
&lt;a href=&quot;http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0017N365K&amp;amp;tag=wixion-22&amp;amp;linkCode=ur2&amp;amp;camp=247&amp;amp;creative=1211&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;Web creators 2008年 06月号&lt;/a&gt;

</description>
<pubDate>Sun, 01 Jun 2008 03:10:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_270.htm</guid>
</item>
<item>
<title>節：万有引力の公式の応用 その２</title>
<link>http://air.wixion.cc/paragraph_271.htm</link>
<description>
cc.xion.Star.as
[[[&lt;br /&gt;
package cc.xion {&lt;br /&gt;
import flash.display.Sprite;&lt;br /&gt;
public class Star extends Sprite {&lt;br /&gt;
public var nRadius:Number;&lt;br /&gt;
public var uColor:int;&lt;br /&gt;
public var nAlpha:Number;&lt;br /&gt;
public var nSpeedX:Number = 0;&lt;br /&gt;
public var nSpeedY:Number = 0;&lt;br /&gt;
public var nMass:Number = 1;&lt;br /&gt;
public function Star(nRadius:Number, uColor:uint = 0xFFFFFF, nAlpha:Number = 1) {&lt;br /&gt;
this.nRadius = nRadius;&lt;br /&gt;
this.uColor = uColor;&lt;br /&gt;
this.nAlpha = nAlpha;&lt;br /&gt;
graphics.beginFill(uColor, nAlpha);&lt;br /&gt;
graphics.drawCircle(0, 0, nRadius);&lt;br /&gt;
graphics.endFill();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
メインソース
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;550&amp;quot; height=&amp;quot;400&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
import cc.xion.Star;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var myBitmapData:BitmapData = new BitmapData(550, 400, false, 0x000000);&lt;br /&gt;
private var bmp:Bitmap = new Bitmap(myBitmapData);&lt;br /&gt;
private var sun:Star = new Star(5, 0xffffff, 1);&lt;br /&gt;
private var hoshi_array:Array = new Array();&lt;br /&gt;
private var nHoshi:uint = 1000;&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
container.addChild(bmp);&lt;br /&gt;
container.addChild(sun);container.addChild(sun);&lt;br /&gt;
sun.x = application.width / 2;&lt;br /&gt;
sun.y = application.height / 2;&lt;br /&gt;
sun.nMass = 1000;&lt;/p&gt;
&lt;p&gt;for (var i:uint = 0; i &amp;lt; nHoshi; i++) {&lt;br /&gt;
var hoshi:Star = new Star(1,0xffffff, 0.2);&lt;br /&gt;
container.addChild(hoshi);&lt;br /&gt;
hoshi.x = 0;&lt;br /&gt;
hoshi.y = i - 300;&lt;br /&gt;
hoshi.nSpeedX = 1;&lt;br /&gt;
hoshi.nSpeedY = 0;&lt;br /&gt;
hoshi.nMass = 1;&lt;br /&gt;
hoshi_array.push(hoshi);&lt;br /&gt;
}&lt;br /&gt;
application.addEventListener(Event.ENTER_FRAME, onEnterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function onEnterFrame(event:Event):void {&lt;br /&gt;
for (var i:uint = 0; i &amp;lt; nHoshi; i++) {&lt;br /&gt;
var hoshi:Star = hoshi_array[i];&lt;br /&gt;
hoshi.x += hoshi.nSpeedX;&lt;br /&gt;
hoshi.y += hoshi.nSpeedY;&lt;br /&gt;
gravitate(hoshi, sun);&lt;br /&gt;
}&lt;br /&gt;
myBitmapData.draw(this);&lt;br /&gt;
}&lt;br /&gt;
private function gravitate(starA:Star, starB:Star):void {&lt;br /&gt;
var dx:Number = starB.x - starA.x;&lt;br /&gt;
var dy:Number = starB.y - starA.y;&lt;br /&gt;
var dist2:Number = dx*dx+dy*dy;&lt;br /&gt;
var force:Number = starA.nMass*starB.nMass/dist2;&lt;br /&gt;
var rad:Number = Math.atan2(dy,dx);&lt;br /&gt;
var forceX:Number = force * Math.cos(rad);&lt;br /&gt;
var forceY:Number = force * Math.sin(rad);&lt;br /&gt;
starA.nSpeedX += forceX;&lt;br /&gt;
starA.nSpeedY += forceY;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;


参考文献
&lt;a href=&quot;http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0017N365K&amp;amp;tag=wixion-22&amp;amp;linkCode=ur2&amp;amp;camp=247&amp;amp;creative=1211&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;Web creators 2008年 06月号&lt;/a&gt;

</description>
<pubDate>Sun, 01 Jun 2008 03:10:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_271.htm</guid>
</item>
<item>
<title>日記：万有引力の公式の応用 その２</title>
<link>http://air.wixion.cc/diary_d_20080601.htm</link>
<description>&lt;p&gt;&lt;a href=&quot;http://air.wixion.cc/paragraph_271.htm&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;万有引力の公式の応用 その２&lt;/a&gt;&lt;/p&gt;
</description>
<pubDate>Sun, 01 Jun 2008 02:52:00 +0900</pubDate>
<guid>http://air.wixion.cc/diary_d_20080601.htm</guid>
</item>
<item>
<title>日記：カーソルからの距離とオブジェクトを連動させる 配列版</title>
<link>http://air.wixion.cc/diary_d_20080531.htm</link>
<description>&lt;p&gt;&lt;a href=&quot;http://air.wixion.cc/paragraph_269.htm&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;カーソルからの距離とオブジェクトを連動させる 配列版&lt;/a&gt;&lt;/p&gt;
</description>
<pubDate>Sat, 31 May 2008 22:54:00 +0900</pubDate>
<guid>http://air.wixion.cc/diary_d_20080531.htm</guid>
</item>
<item>
<title>節：カーソルからの距離とオブジェクトを連動させる 配列版</title>
<link>http://air.wixion.cc/paragraph_269.htm</link>
<description>
cc.xion.Circle_DocClass.as
[[[&lt;br /&gt;
package cc.xion&lt;br /&gt;
{&lt;p&gt;import flash.display.Shape;&lt;br /&gt;
import flash.display.Sprite;&lt;/p&gt;
public class Circle_DocClass extends Sprite&lt;br /&gt;
{&lt;br /&gt;
private var radius:Number;&lt;br /&gt;
private var weight:Number;&lt;br /&gt;
private var color:Number;&lt;br /&gt;
private var posX:Number;&lt;br /&gt;
private var posY:Number;&lt;br /&gt;
private var pixelHinting:Boolean = false;&lt;br /&gt;
private var scaleMode:String = &amp;quot;none&amp;quot;;&lt;br /&gt;
public function Circle_DocClass(radius:Number = 30, weight:Number = 10, color:Number = 0x33cc33, posX:Number = 275, posY:Number = 200)&lt;br /&gt;
{&lt;br /&gt;
super();&lt;br /&gt;
this.radius = radius;&lt;br /&gt;
this.weight = weight;&lt;br /&gt;
this.color = color;&lt;br /&gt;
this.posX = posX;&lt;br /&gt;
this.posY = posY;&lt;br /&gt;
init();&lt;br /&gt;
}&lt;br /&gt;
private function init():void {&lt;br /&gt;
var myCircle:Shape = new Shape();&lt;br /&gt;
myCircle.graphics.lineStyle(weight, color, 1, pixelHinting, scaleMode);&lt;br /&gt;
myCircle.graphics.drawCircle (0, 0, radius);&lt;br /&gt;
myCircle.x = posX;&lt;br /&gt;
myCircle.y = posY;&lt;br /&gt;
addChild(myCircle);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
メインソース
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;550&amp;quot; height=&amp;quot;400&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
import cc.xion.Circle_DocClass;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var myCircle:Circle_DocClass;&lt;br /&gt;
private var circles:Array = new Array();&lt;br /&gt;
private var stageW:uint;&lt;br /&gt;
private var stageH:uint;&lt;br /&gt;
private var myRadius:uint = 30;&lt;br /&gt;
private var myWeight:uint = 1;&lt;br /&gt;
private var myColor:uint = 0x333333;&lt;br /&gt;
private var xNum:uint = 16;&lt;br /&gt;
private var yNum:uint = 11;&lt;br /&gt;
private var defX:int = 40;&lt;br /&gt;
private var defY:uint = 40;&lt;br /&gt;
private var intervalX:int = 30;&lt;br /&gt;
private var intervalY:int = 30;&lt;br /&gt;
private var red:int = 0;&lt;br /&gt;
private var green:int = 0;&lt;br /&gt;
private var blue:int = 0;&lt;br /&gt;
private var alphas:int = 0;&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
stageW = application.width;&lt;br /&gt;
stageH = application.height;&lt;br /&gt;
putCircle(xNum, yNum);&lt;br /&gt;
application.addEventListener(Event.ENTER_FRAME, onEnterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function putCircle(xNum:uint, yNum:uint):void {&lt;br /&gt;
for (var i:int=0;i&amp;lt;yNum;i++) {&lt;br /&gt;
for (var j:int=0;j&amp;lt;xNum;j++) {&lt;br /&gt;
var xPos:int = j * intervalX + defX;&lt;br /&gt;
var yPos:int = i * intervalY + defY;&lt;br /&gt;
myCircle = new Circle_DocClass(myRadius, myWeight, myColor, 0, 0);&lt;br /&gt;
myCircle.x = xPos;&lt;br /&gt;
myCircle.y = yPos;&lt;br /&gt;
container.addChild(myCircle);&lt;br /&gt;
circles.push(myCircle);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
private function onEnterFrame(event:Event):void {&lt;br /&gt;
for (var i:int=0;i&amp;lt;circles.length;i++) {&lt;br /&gt;
var circle:Circle_DocClass = circles[i];&lt;br /&gt;
changeScale(circle);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
private function changeScale(c:Circle_DocClass):void {&lt;br /&gt;
var d:Number = distanceMouse(c);&lt;br /&gt;
var K:Number;&lt;br /&gt;
var R:Number = 20;&lt;br /&gt;
var T:Number = 0.9;&lt;br /&gt;
K = R/d + T;&lt;br /&gt;
if (K &amp;gt; 1) {&lt;br /&gt;
c.scaleX = c.scaleY = K;&lt;br /&gt;
} else {&lt;br /&gt;
c.scaleX = c.scaleY = 1;&lt;br /&gt;
}&lt;br /&gt;
red = K * 300 - 300;&lt;br /&gt;
green = K * 150;&lt;br /&gt;
alphas = (K * 120 - 250) / 2;&lt;br /&gt;
c.transform.colorTransform = new ColorTransform(1,1,1,1,red,green,blue,alphas);&lt;br /&gt;
}&lt;br /&gt;
private function distanceMouse(c:Circle_DocClass):Number {&lt;br /&gt;
var c:Circle_DocClass = c;&lt;br /&gt;
var mX:Number = mouseX - c.x;&lt;br /&gt;
var mY:Number = mouseY - c.y;&lt;br /&gt;
var d:Number = Math.sqrt(mX*mX+mY*mY);&lt;br /&gt;
if (d&amp;lt;myRadius) {&lt;br /&gt;
d = myRadius;&lt;br /&gt;
}&lt;br /&gt;
return d;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;


参考文献
&lt;a href=&quot;http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0015Y5XQ6&amp;amp;tag=wixion-22&amp;amp;linkCode=ur2&amp;amp;camp=247&amp;amp;creative=1211&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;Web creators 2008年 05月号&lt;/a&gt;

</description>
<pubDate>Sat, 31 May 2008 22:53:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_269.htm</guid>
</item>
<item>
<title>節：カーソルからの距離とオブジェクトを連動させる</title>
<link>http://air.wixion.cc/paragraph_268.htm</link>
<description>
cc.xion.Circle_DocClass.as
[[[&lt;br /&gt;
package cc.xion&lt;br /&gt;
{&lt;p&gt;import flash.display.Shape;&lt;br /&gt;
import flash.display.Sprite;&lt;/p&gt;
public class Circle_DocClass extends Sprite&lt;br /&gt;
{&lt;br /&gt;
private var radius:Number;&lt;br /&gt;
private var weight:Number;&lt;br /&gt;
private var color:Number;&lt;br /&gt;
private var posX:Number;&lt;br /&gt;
private var posY:Number;&lt;br /&gt;
private var pixelHinting:Boolean = false;&lt;br /&gt;
private var scaleMode:String = &amp;quot;none&amp;quot;;&lt;br /&gt;
public function Circle_DocClass(radius:Number = 30, weight:Number = 10, color:Number = 0x33cc33, posX:Number = 275, posY:Number = 200)&lt;br /&gt;
{&lt;br /&gt;
super();&lt;br /&gt;
this.radius = radius;&lt;br /&gt;
this.weight = weight;&lt;br /&gt;
this.color = color;&lt;br /&gt;
this.posX = posX;&lt;br /&gt;
this.posY = posY;&lt;br /&gt;
init();&lt;br /&gt;
}&lt;br /&gt;
private function init():void {&lt;br /&gt;
var myCircle:Shape = new Shape();&lt;br /&gt;
myCircle.graphics.lineStyle(weight, color, 1, pixelHinting, scaleMode);&lt;br /&gt;
myCircle.graphics.drawCircle (0, 0, radius);&lt;br /&gt;
myCircle.x = posX;&lt;br /&gt;
myCircle.y = posY;&lt;br /&gt;
addChild(myCircle);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}&lt;p&gt;]]]&lt;/p&gt;
メインソース
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;550&amp;quot; height=&amp;quot;400&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
import cc.xion.Circle_DocClass;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private var myCircle:Circle_DocClass;&lt;br /&gt;
private var myRadius:Number = 10;&lt;br /&gt;
private var myWeight:Number = 6;&lt;br /&gt;
private var myColor:Number = 0xffcc00;&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
myCircle = new Circle_DocClass(myRadius, myWeight, myColor, 0, 0);&lt;br /&gt;
myCircle.x = application.width / 2;&lt;br /&gt;
myCircle.y = application.height / 2;&lt;br /&gt;
container.addChild(myCircle);&lt;br /&gt;
myCircle.addEventListener(Event.ENTER_FRAME, onEnterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function onEnterFrame(event:Event):void {&lt;br /&gt;
changeScale(myCircle);&lt;br /&gt;
}&lt;br /&gt;
private function changeScale(c:Circle_DocClass):void {&lt;br /&gt;
var d:Number = distanceMouse(c);&lt;br /&gt;
var K:Number;&lt;br /&gt;
var R:Number = 80;&lt;br /&gt;
var T:Number = 0.9;&lt;br /&gt;
K = R/d + T;&lt;br /&gt;
c.scaleX = c.scaleY =  K;&lt;br /&gt;
}&lt;br /&gt;
private function distanceMouse(c:Circle_DocClass):Number {&lt;br /&gt;
var c:Circle_DocClass = c;&lt;br /&gt;
var mX:Number = mouseX - c.x;&lt;br /&gt;
var mY:Number = mouseY - c.y;&lt;br /&gt;
var d:Number = Math.sqrt(mX * mX + mY * mY);&lt;br /&gt;
if (d &amp;lt; myRadius) {&lt;br /&gt;
d = myRadius;&lt;br /&gt;
}&lt;br /&gt;
return d;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;


参考文献
&lt;a href=&quot;http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0015Y5XQ6&amp;amp;tag=wixion-22&amp;amp;linkCode=ur2&amp;amp;camp=247&amp;amp;creative=1211&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;Web creators 2008年 05月号&lt;/a&gt;

</description>
<pubDate>Sat, 31 May 2008 21:15:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_268.htm</guid>
</item>
<item>
<title>節：原点からのマウスの距離 C=Math.sqrt(A*A+B*B)</title>
<link>http://air.wixion.cc/paragraph_267.htm</link>
<description>&lt;p&gt;原点からのマウスの距離はピタゴラスの定理 C=Math.sqrt(A*A+B*B) を使い求める。&lt;/p&gt;
&lt;p&gt;[[[&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot; width=&amp;quot;550&amp;quot; height=&amp;quot;400&amp;quot; initialize=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Label x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; id=&amp;quot;xLabel&amp;quot; text=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
import mx.core.UIComponent;&lt;br /&gt;
private var container:UIComponent = new UIComponent();&lt;br /&gt;
private function init():void {&lt;br /&gt;
addChild(container);&lt;br /&gt;
application.addEventListener(Event.ENTER_FRAME, onEnterFrame);&lt;br /&gt;
}&lt;br /&gt;
private function onEnterFrame(event:Event):void {&lt;br /&gt;
var mX:Number = mouseX;&lt;br /&gt;
var mY:Number = mouseY;&lt;br /&gt;
var d:Number = Math.sqrt(mX * mX + mY * mY);&lt;br /&gt;
xLabel.text = &amp;quot;原点からのマウスの距離 = &amp;quot; + d;&lt;br /&gt;
}&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;
]]]&lt;/p&gt;
</description>
<pubDate>Sat, 31 May 2008 20:32:00 +0900</pubDate>
<guid>http://air.wixion.cc/paragraph_267.htm</guid>
</item>


</channel>



</rss>
