トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ブロック崩しのボールの速度を一定に。
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
Fumio
Åê¹ÆNo.30066
投稿日時: 2006-11-17 4:28
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
Re: ブロック崩しのボールの速度を一定に。
importステートメントは、ほかにフィルタを使うときにも必要になります。「スクリプトでフィルタを使う ? BlurFilter」の「1. フィルタのインスタンスを作成する」をご参照ください。
引用:
ebiさんは書きました:
なぜかしら、今日は、
import flash.geom.Point;
って記述をよく見ます。
たいてい、スクリプトの頭に入ってるようです。
いったい何をしてるんでしょうか? これは。

あるものは使ってみただけですので、自分で関数など定義して処理することも可能です。
// 原点(0, 0):
// var p_0:Object = xPoint(0, 0);
// 変更前(10, 10):
var p_1:Object = xPoint(10, 10);
// var nDistance:Number = xDistance(p_0, p_1);
var nDistance:Number = xLength(p_1);
trace(nDistance);
// 変更後(5, 15):
var p_2:Object = xPoint(5, 15);
p_2 = xNormalize(p_2, nDistance);  // 長さを同じに
// trace([p_2.x, p_2.y, p_2.y/p_2.x, xDistance(p_0, p_2)]);
trace([p_2.x, p_2.y, p_2.y/p_2.x, xLength(p_2)]);
function xPoint(nX:Number, nY:Number):Object {
    return {x:nX, y:nY};
}
/*
function xDistance(oStartPoint:Object, oEndPoint:Object):Number {
    var nDistanceX:Number = oEndPoint.x-oStartPoint.x;
    var nDistanceY:Number = oEndPoint.y-oStartPoint.y;
    return Math.sqrt(nDistanceX*nDistanceX+nDistanceY*nDistanceY);
}
*/
function xLength(oPoint:Object):Number {
    var nDistanceX:Number = oPoint.x;
    var nDistanceY:Number = oPoint.y;
    return Math.sqrt(nDistanceX*nDistanceX+nDistanceY*nDistanceY);
}
function xNormalize(oPoint:Object, nLength:Number):Object {
    // var nOriginalLength:Number = xDistance({x:0, y:0}, oPoint);
    var nOriginalLength:Number = xLength(oPoint);
    var nNormalizeRatio:Number = nLength/nOriginalLength;
    return {x:oPoint.x*nNormalizeRatio, y:oPoint.y*nNormalizeRatio};
}

[追記] 投稿No.30050のスクリプト変更に合わせて、上記サンプルもxLength()関数を使う処理に修正しました。
引用:
Pointは分かりました。
が、なんだか、変数に出し入れして自分で管理した方が良さそうな感じです。

Point.distance()メソッドは、「2点間の距離」を返します。
引用:
distanceはリファレンスには「ベベルのオフセット距離」と
...[中略]...
まぁ野中さんのスクリプトから察するになんとなく2点間の距離を
返すもののような気がします。

Point.normalize()メソッドは、方向(角度)は変えずに、長さを指定した値に設定します。ですから、このメソッドが、まさにebiさんの必要とされているものです。
引用:
normalizeは...
(0,0) と現在のポイント間の線のセグメントを設定された長さに拡大・縮小します。

だそうです。...

まず変更前のxy成分(10, 10)の長さを求め、つぎに変更後のxy成分(5, 15)のベクトルを作成し、その長さを(10, 10)と等しく設定します。その結果求められた新たなxy成分のベクトルは、(4.47213595499958,13.4164078649987)です。y/xの比が(5, 15)と同じ3ですので、方向が一致していることになります。
引用:
以上ふまえて考えてみると野中さんのスクリプトは、
まず基準となる点、基準となる距離を決めておき、
変更点の位置が変わったら、基準点から変更点への線上の
基準距離の位置の点を出せば角度も速度(距離)も変わらない
ってな感じの事をされてるんだろうなぁって事は分かりました。


----------------
 

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-16 17:33
     Re: ブロック崩しのボールの速度を一定に。 usuaji 2006-11-16 18:40
       Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-16 18:50
         Re: ブロック崩しのボールの速度を一定に。 Fumio 2006-11-16 20:09
           Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-16 21:33
           Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-16 22:07
             Re: ブロック崩しのボールの速度を一定に。 ymori 2006-11-16 22:21
             Re: ブロック崩しのボールの速度を一定に。 Fumio 2006-11-16 22:21
               Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-16 23:22
               » Re: ブロック崩しのボールの速度を一定に。 Fumio 2006-11-17 4:28
                   Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-17 6:41
           Re: ブロック崩しのボールの速度を一定に。 Fumio 2006-11-17 9:20
             Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-17 10:31
               Re: ブロック崩しのボールの速度を一定に。 Fumio 2006-11-17 10:42
                 Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-17 17:52
                   Re: ブロック崩しのボールの速度を一定に。 raiha 2006-11-17 18:21
                   Re: ブロック崩しのボールの速度を一定に。 Fumio 2006-11-17 18:26
                     Re: ブロック崩しのボールの速度を一定に。 ebiebi 2006-11-17 18:39

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops