これがちょっとしたスレッド ジャックである場合は申し訳ありませんが、最近、このタイプの機能が必要な状況がありました。これに対する答えはもう必要ないと思いますが、私が思いついた解決策が他の人の助けになることを願っています.
親愛なる神よ、なぜ誰かがこれをするのでしょうか?!
私の特定のケースでは、スクロールする必要がある非常に長いテキストフィールドがありました。私の経験では、非常に長いテキスト フィールドを扱う場合、ムービークリップを垂直方向に移動してスクロールするのは信頼性が低く、Adobe/Flash uiscrollbar
esk メソッドを使用しscrollV
てテキスト フィールドを調整する必要がありました。
これは、(外部ソースではなく) ライブラリから取得したインライン画像と、テキストのセクションを囲むブラックボックスの境界線の両方が必要になるため、さらに複雑になりました。文章。
簡単に言うと、完全に自己完結型の swf で、酌量すべき状況 (医薬品のバナーなど) の場合にのみ、このようなことを行う必要があるだけでしょう。
ライブラリからの画像の挿入:
これを実現するには、ライブラリ内の画像からムービークリップを作成し、そのムービークリップを Actionscript 用にエクスポートする必要があります。次に、コードに次のようなものを追加します。
//This is a string from your textfield that you will replace with an image
var matchForImageSplit:String = 'IMAGE 1 GOES HERE';
//This is the code to replace the above string
//Here, "Image1" is the class name of the exported MovieClip
var imageToAdd:String = '<img src="Image1" />';
my_text.htmlText = my_text.htmlText.split(matchForImageSplit).join(imageToAdd);
テキストの周りにブラック ボックスの境界線を追加する:
これはもう少しトリッキーでした。私がしなければならなかったことは、必要なサイズの境界線を持つ MovieClip を作成し、名前を付けることでした。次に、それを本来あるべきテキストの後ろに配置し、そのすべてをムービークリップで囲みましたparent_mc
。
次に、スクロールに合わせて移動するようにボックスをコーディングする必要がありました。以下は特定の私のプロジェクトですが、これがその要点です。
//THIS CODE IS NON-FUNCTIONAL AND SHOULD ONLY BE USED AS A REFERENCE
//Redundant - just making the example more clear.
var my_text:TextField = parent_mc.my_text;
var borderBox:Sprite = parent_mc.borderBox;
//Vars for calculating position and movement
var borderBoxStartY:Number = borderBox.y;
var incrementRate:Number = my_text.textHeight/my_text.numLines;
var sPos:Number;
var top:Number = dragger.y;
var bottom:Number = (dragger.y + track.height) - dragger.height;
var range:Number = bottom - top;
var ctrl:Number = parent_mc.y; //"parent_mc" is the parent MC that contains the textField and borderBox
function dragScroll():void {
ratio = my_text.maxScrollV/range;
sPos = (dragger.y * ratio) - ctrl;
my_text.scrollV = Math.ceil(sPos);
borderBox.y = ((borderBoxStartY + incrementRate) - (my_text.scrollV * incrementRate));
}
これらすべてを試す前に注意すべき点は、 を使用する場合scrollV
、テキストが行ごとに移動されるため、(位置ベースのスクロールのように) スムーズにスクロールしないことです。これにより、スクロールが「ぎくしゃく」することがあります。
EDIT:scrollPane
これはすべてカスタムプログラムされており、実際には/uiscrollbar
コンポーネントを
使用していませんが、同じように動作することにも注意してください。