¥´¥à¤Ò¤â¤Ã¤Ý¤¤¶ÊÀþÉÁ²è

¥Þ¥¦¥¹¥«¡¼¥½¥ë¤Îư¤­¤Ë¤¢¤ï¤»¤Æ¶ÊÀþ¤¬ÊѲ½¤¹¤ë¥µ¥ó¥×¥ë¤Ç¤¹¡£¥´¥à¤Ò¤â¤Îü¤ò¤Ä¤Þ¤ó¤Çư¤«¤¹¤è¤¦¤Ê¥«¥ó¥¸¡Ê¡©¡Ë¤Ç¤¹¡£





¶ÊÀþ¤ÏGraphics#curveTo¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆÉÁ²è¤·¤Æ¤¤¤Þ¤¹¡£

¥µ¥ó¥×¥ë¤Ç¤Ï¥Þ¥¦¥¹¥«¡¼¥½¥ë¤Îư¤­¤ËϢư¤¹¤ëÉÁ²è¥ª¥Ö¥¸¥§¥¯¥È¤ò¤¤¤¯¤Ä¤«ÍѰդ·¤Æ¡¢¤½¤¤¤Ä¤é¤ÎºÂɸ¤ò¥³¥ó¥È¥í¡¼¥ë¥Ý¥¤¥ó¥È¡¢£²¤Ä¤Î¥³¥ó¥È¥í¡¼¥ë¥Ý¥¤¥ó¥È¤ÎÃæÅÀ¤ò¥¢¥ó¥«¡¼¥Ý¥¤¥ó¥È¤È¤·¤ÆcurveTo¥á¥½¥Ã¥É¤òϢ³¤Ç»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£

ÃæÅÀ¤ò¥¢¥ó¥«¡¼¥Ý¥¤¥ó¥È¤Ë¤¹¤ë¤Î¤Ï¡¢¤¿¤·¤«¡ÖActionScript 3.0 Animation¡×¤ÎcurveTo¤Î¥µ¥ó¥×¥ë¤Ç¤ä¤Ã¤Æ¤¿¤ä¤êÊý¤À¤Ã¤¿¤È»×¤¤¤Þ¤¹¡£

¥³¥ó¥È¥í¡¼¥ë¥Ý¥¤¥ó¥È¤È¤Ê¤ëÉÁ²è¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥¿¡¼¥²¥Ã¥È¤È¤Ê¤ëÉÁ²è¥ª¥Ö¥¸¥§¥¯¥È¤«¤é°ìÄê¤Îµ÷Î¥¤Ë¸ºÂ®¤·¤Ê¤¬¤é¶á¤Å¤¯Æ°ºî¤ò¤·¤Þ¤¹¡£¥µ¥ó¥×¥ë¤Ç¤Ï¥³¥ì¤ò¥¹¥×¥é¥¤¥È¤ÎÇÉÀ¸¥¯¥é¥¹¤È¤·¤Æ¼ÂÁõ¤·¤Æ¤ß¤Þ¤·¤¿¡£

package {
import flash.display.*;
import flash.events.*;
/**
* ¸ºÂ®¤·¤Ê¤¬¤é¥¿¡¼¥²¥Ã¥È¤Ë¶á¤Å¤¯¥¹¥×¥é¥¤¥È¡£
*/
public class Stalker extends Sprite {
/** ¥¿¡¼¥²¥Ã¥È */
private var _target:DisplayObject;
/** ¥¿¡¼¥²¥Ã¥È¤È¤Î´Ö¤ËÃÖ¤¯µ÷Î¥ */
private var _distance:Number;
/** ¶á¤Å¤¯Â®ÅÙ·¸¿ô */
private var _speed:Number;
/**
* ¥³¥ó¥¹¥È¥é¥¯¥¿
* @param target ¥¿¡¼¥²¥Ã¥È
* @param distance ¥¿¡¼¥²¥Ã¥È¤È¤Î´Ö¤ËÃÖ¤¯µ÷Î¥
* @param speed ®ÅÙ·¸¿ô
*/
public function Stalker(target:DisplayObject,
distance:Number = 0,
speed:Number = 2) {
_target = target;
_distance = distance;
_speed = speed;
// ¥Õ¥ì¡¼¥à¥¤¥Ù¥ó¥È¤òÅÐÏ¿
addEventListener(Event.ENTER_FRAME, doEnterFrame);
}
/**
* ¥Õ¥ì¡¼¥à¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡£
* @param evt ¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È
*/
public function doEnterFrame(evt:Event) {
// ¥¿¡¼¥²¥Ã¥È¤Þ¤Ç¤Îµ÷Î¥
var dx:Number = _target.x - evt.target.x;
var dy:Number = _target.y - evt.target.y;
var td:Number = Math.sqrt(dx * dx + dy * dy);
// °Üưµ÷Î¥
var d:Number = (td - _distance) / _speed;
// °Üư
evt.target.x += dx * d / td;
evt.target.y += dy * d / td;
}
}
}
¥³¥ó¥¹¥È¥é¥¯¥¿¤ÇÄÉÀ×ÂоݤÎÉÁ²è¥ª¥Ö¥¸¥§¥¯¥È¡¿ºÇ½ªÅª¤ËÄÉÀ×ÂоݤȤδ֤ËÃÖ¤¯µ÷Î¥¡¿Â®ÅÙ·¸¿ô¤ò»ØÄꤹ¤ë¤È¡¢¤½¤ì¤é¤Î¥Ñ¥é¥á¡¼¥¿¤Ë¹ç¤ï¤»¤Æ¸ºÂ®¤·¤Ê¤¬¤é°Üư¤·¤Þ¤¹¡£¼«¿È¤Î°ÌÃÖ¤òÊѹ¹¤¹¤ë½èÍý¤ÏdoEnterFrame¥á¥½¥Ã¥É¤Ëµ­½Ò¤·¤Æ¤¤¤Æ¡¢¥³¥ì¤òENTER_FRAME¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤ËÅÐÏ¿¤·¤Æ¤¤¤Þ¤¹¡£

¥µ¥ó¥×¥ë¤Î¥Õ¥é¥Ã¥·¥å¤Î¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó¤Ï¤³¤ó¤Ê¥«¥ó¥¸¤Ç¤¹¡£
// ¥Ý¥¤¥ó¥È´Ö¤Îµ÷Î¥
var d:Number = 10;
// ¥Ý¥¤¥ó¥È°Üư®ÅÙ·¸¿ô
var s:Number = 2;
// ¥Ý¥¤¥ó¥È¿ô
var point_cnt:int = 10;
// ÀèÆ¬¥Ý¥¤¥ó¥È
var target:Sprite = new Sprite();
var g:Graphics = target.graphics;
g.beginFill(0x0000FF, 1.0);
g.drawCircle(0, 0, 2);
g.endFill();
target.visible = false;
addChild(target);
// ¥Ý¥¤¥ó¥ÈÇÛÎó
var point_array:Array = [target];
// ÉÁ²èÎΰè
var screen:Sprite = new Sprite();
addChild(screen);
// ¥Ý¥¤¥ó¥ÈÀ¸À®
for (var i:int = 0; i < point_cnt; i++) {
var stalker:Stalker = createPoint(point_array[i]);
addChild(stalker);
point_array.push(stalker);
}
// ¥Õ¥ì¡¼¥à¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é
addEventListener(Event.ENTER_FRAME,
function(e:Event) {
// ¥¿¡¼¥²¥Ã¥È¤ò°Üư
target.x = stage.mouseX;
target.y = stage.mouseY;
// ¶ÊÀþÉÁ²è
drawCurve();
});
// ¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é
addEventListener(MouseEvent.CLICK,
function(e:Event) {
for each (var p:Sprite in point_array) {
p.visible = !p.visible;
}
});
// ¥Ý¥¤¥ó¥ÈÀ¸À®¥á¥½¥Ã¥É
function createPoint(target:DisplayObject):Stalker {
var stalker:Stalker = new Stalker(target, d, s);
var g:Graphics = stalker.graphics;
g.beginFill(0x0000FF, 1.0);
g.drawCircle(0, 0, 2);
g.endFill();
stalker.visible = false;
return stalker;
}
// ¶ÊÀþÉÁ²è¥á¥½¥Ã¥É
function drawCurve() {
var g:Graphics = screen.graphics;
g.clear();
var p:Sprite = point_array[0];
var np:Sprite = point_array[1];
g.moveTo(p.x, p.y);
for (var i:int = 1, iEnd:int = point_array.length - 1;
i < iEnd;
i++) {
p = np;
np = point_array[i + 1];
g.lineStyle(1, 0x9999FF);
g.curveTo(p.x, p.y, (p.x + np.x) / 2, (p.y + np.y) / 2);
}
}
ºÇ½é¤Ë¥¹¥×¥é¥¤¥È¤ò°ì¤ÄºîÀ®¤·¤Æ¤¤¤Þ¤¹¡Êtarget¡Ë¡£¥³¥ì¤Ï¥Þ¥¦¥¹¥«¡¼¥½¥ë¤Î°ÌÃÖ¤Ëɽ¼¨¤¹¤ë¥¹¥×¥é¥¤¥È¤Ç¤¹¡£Àè¤Û¤É¤ÎStalker¥¯¥é¥¹¤ò¡¢»ØÄꤷ¤¿DisplayObject¤òÄÉÀפ¹¤ë¤è¤¦¤Ë¤·¤¿¤¿¤á¤ÎÁ¼Ã֥ǥ¹¡£

¤Ä¤®¤Ëpoint_cnt¿ôʬ¤ÎStalker¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ÎºÝ¡¢¥¿¡¼¥²¥Ã¥È¤È¤·¤Æ°ì¤ÄÁ°¤ËºîÀ®¤·¤¿Stalker¥¤¥ó¥¹¥¿¥ó¥¹¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡Ê¤¿¤À¤·ºÇ½é¤ÎStalker¥¤¥ó¥¹¥¿¥ó¥¹¤Ïtarget¤òÄÉÀפ¹¤ë¡Ë¡£¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ³ÆStalker¥¤¥ó¥¹¥¿¥ó¥¹¤Ë¿ô¼î·Ò¤®¤Ã¤Ý¤¤Æ°¤­¤ò¤µ¤»¤Æ¤¤¤Þ¤¹¡£

¥Õ¥ì¡¼¥à¥¤¥Ù¥ó¥È¤Ç¤Ï¡¢¥Þ¥¦¥¹¥«¡¼¥½¥ë¤Î°ÌÃÖ¤Ëtarget¤ò°Üư¡£¤½¤Î¸å¶ÊÀþ¤òÉÁ²è¤·¤Æ¤¤¤Þ¤¹¡£¶ÊÀþÉÁ²è¤Î¼ÂÁõ¤ÏdrawCurve¥á¥½¥Ã¥É¤Ç¤¹¡£

drawCurve¥á¥½¥Ã¥É¤Ç¤Ï¡¢¥¹¥Æ¡¼¥¸¤ËÇÛÃÖ¤·¤¿screen¥¤¥ó¥¹¥¿¥ó¥¹¤Îgraphics¥×¥í¥Ñ¥Æ¥£¤ò»È¤Ã¤ÆÉÁ²è¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£ºÇ½é¤Ëscreen¥¤¥ó¥¹¥¿¥ó¥¹¤ËÉÁ²è¤µ¤ì¤Æ¤¤¤ëÆâÍÆ¤ò¾Ãµî¤·¡¢¼¡¤Ëtarget¤ÈStalker¥¤¥ó¥¹¥¿¥ó¥¹¤¿¤Á¤ÎºÂɸ¤ò»È¤Ã¤Æ¶ÊÀþ¤òÉÁ²è¤·¤Æ¤¤¤Þ¤¹¡£

¤Þ¤¿¡¢MouseEvent.CLICK¥¤¥Ù¥ó¥È¤Î¥Ï¥ó¥É¥é¤Çtarget¤ÈStalker¥¤¥ó¥¹¥¿¥ó¥¹¤¿¤Á¤Îɽ¼¨¡¿Èóɽ¼¨ÀÚ¤êÂØ¤¨½èÍý¤ò¤·¤Æ¤¤¤Þ¤¹¡£

¥Æ¡¼¥Þ:Flash - ¥¸¥ã¥ó¥ë:¥³¥ó¥Ô¥å¡¼¥¿

2007.09.13 | | Comments(0) | Trackback(2) | Flash CS3

¥È¥é¥Ã¥¯¥Ð¥Ã¥¯

http://100th.blog96.fc2.com/tb.php/35-0c585fbb
¤³¤Îµ­»ö¤Ë¥È¥é¥Ã¥¯¥Ð¥Ã¥¯¤¹¤ë(FC2¥Ö¥í¥°¥æ¡¼¥¶¡¼)

dankai (ÃIJô) ¥Ñ¥ó¥Á 2007ǯ 10·î¹æ [»¨»ï

dankai (ÃIJô) ¥Ñ¥ó¥Á 2007ǯ 10·î¹æ [»¨»ï]¡¦¥´¥à¤Ò¤â¤Ã¤Ý¤¤¶ÊÀþÉÁ²è¡¦¥¿¡¼¥²¥Ã¥È / Target¡¦¥á¥¬¥È¥ó¥Ñ¥Ö ¥¿¡¼¥²¥Ã¥È¡¦¤Ï¤Æ¤ÊRSS-¥Ý¥¤¥ó¥È¥µ¥¤¥È ¥Õ¥£¡¼¥É¤¬¹¹¿·¤µ¤ì¤Þ¤·¤¿¡¦LA·ã°Â¤ªÇ㤤ʪ¾ðÊ󤽤Î6¡¦¥×¥íÇÏ·ô»Õ¤Î¶¥Çϥޥ˥奢¥ë¡Ö¥À¡¼¥ÈÀìÍѸ·ÁªÇÏ·ô½Ñ¡×¡¦layout/gene...

2007.09.27 | ¤¯¤ë¤ß¤Îblog

CHOKi CHOKi (¥Á¥ç¥­¥Á¥ç¥­) 2008ǯ 02·î¹æ

CHOKi CHOKi (¥Á¥ç¥­¥Á¥ç¥­) 2008ǯ 02·î¹æ [»¨»ï]¡¦TARGET WORLD CHALLENGE¡¦¥´¥à¤Ò¤â¤Ã¤Ý¤¤¶ÊÀþÉÁ²è¡¦¥Æ¥¤¥¯¥ª¡¼¥Ð¡¼¥¿¡¼¥²¥Ã¥È¤Ï¹ßÃ塦̵ÎÁ¥ì¥Ý¡¼¥È¡Ö¥Ç¡¼¥¿¤È¤Ã¤Æ¥¢¥Õ¥£¥ê¥¨¥¤¥È¤·¤Æ¤Þ¤¹¤«¡©¥¤¥ó¥Õ¥©¥È¥Ã¥× ...¡¦User JavaScript - ¥¤¥Ù¥ó¥È¥­¥ã¥×¥Á¥ã¤Î¥Æ¥¹¥È¡¦¥¿¡¼¥...

2008.01.08 | ¤¯¤ë¤ß¤Îblog

«  | HOME |  »

¥×¥í¥Õ¥£¡¼¥ë

Author:HundredthMonkey
¥×¥í¥°¥é¥Þ¡£

¥Ö¥í¤È¤â¿½ÀÁ¥Õ¥©¡¼¥à

¤³¤Î¿Í¤È¥Ö¥í¤È¤â¤Ë¤Ê¤ë

¥Ö¥í¥°Æâ¸¡º÷

¥á¡¼¥ë¥Õ¥©¡¼¥à

̾Á°:
¥á¡¼¥ë:
·ï̾:
ËÜʸ: