
テキストフィールドにスクロールバーをつけようと思いUIScrollBarを使用したのですが、
少々味気ないのでマウスホイール対応のスクロールバーを自作しようと思ってます。
しかしWEBで検索してもサンプルを配布しているサイトは多数あったのですが、一から解説しているサイトは発見できませんでした。
お手数ですが、スクロールバーの自作の仕方を教えて頂けないでしょうか。
FLASH製作の知識が全くといっていいほどないので、分かりやすく教えていただければ助かります。
ちなみに製作ソフトはFLASH8を使っています。
よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示

No.1
- 回答日時:
先にツッコミを入れさせていただいでかまわないでしょうか。
UIScrollBar を付けたテキストフィールドを一度クリックして,
マウスホイールを回転させると,テキストフィールド の文字もスクロールしますし,
スクロールバーもスクロールしますけど...。
UIScrollBarは元からマウスホイール対応のスクロールバーです。
と言うかですね,
UIScrollBar を付けなくても,
単なるダイナミックテキストフィールドやテキスト入力のテキストフィールドを用意しただけで,
マウスホイールの回転でテキストはスクロールします。
例えば,こちらのサンプルでも (どこのサンプルでも),
マウスホイールの回転でテキストはスクロールします↓。
「action script_テキストスクロール」
http://www.flashiroha.com/script/as5.html
私の環境は Windows XP ,Flash Player 9 です。
お使いの OS が Mac だと,
マウスホイールでスクロールさせられないのかもしれませんが,
それは ActionScript でいくら頑張ってもできません。
ですから,
自作しても,スクロールできない物はスクロールできませんし,
スクロールできる場合は自作しなくても元からスクロールできます。
Google 検索「onMouseWheel Mac」
http://www.google.co.jp/search?hl=ja&q=onMouseWh …
/////////////////////////////////////////////
ですから,
上記のマウスホイール の話とは別問題として,
簡単にテキストフィールドに付けるスクロールバーを自作する方法(スクリプト)を説明します。
しかし,その前に,
> WEBで検索してもサンプルを配布しているサイトは多数あったのですが、
> 一から解説しているサイトは発見できませんでした。
ココは図入りで説明できたり,サンプルを置けるような一般的なサイトではありませんよ。
普通のサイトのようにちゃんと説明できるはずは元からありません。
どれだけの紙面とどれだけの画像とサンプルを用意しなければならないのかわかっていらっしゃいますか?
ですから,
簡単に スクロールバー の "バー" の部分についてのみ,
私流の作り方の簡易版を説明します。
Flash のヘルプで次のページのようなことを理解すると,
ある程度の簡易版が作れます↓。
scroll (TextField.scroll プロパティ)
http://livedocs.macromedia.com/flash/8_jp/main/0 …
maxscroll (TextField.maxscroll プロパティ)
http://livedocs.macromedia.com/flash/8_jp/main/0 …
startDrag 関数
http://livedocs.macromedia.com/flash/8_jp/main/0 …
まず,
ステージ上に,3~4行ほどのテキストが表示できる小さめのダイナミックテキストのテキストフィールドを作成します。
そして,プロパティインスペクタ(プロパティパネル)で,
文字の色は黒など背景色以外の色を指定して,「複数行」の設定にしてください。
そしてインスタンス名を付けますがこの説明では 「my_txt」 というインスタンス名を付けたとしておきます。
その小さめのテキストフィールドの右横に,
バーとなる 塗りの長方形 を矩形ツールで描きます。
長さはテキストフィールドの高さより短くしてください。
その 塗りの長方形 を選択して,
「修正」→「シンボルに変換」でムービークリップシンボルに変換するわけですが,
その変換するときの基準点の位置を 「左上」 にしてください。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
変換できましたら,インスタンス名を付けるのですが,
この説明では 「my_bar」 というインスタンス名を付けたとしておきます。
↓「my_txt」 ↓「my_bar」
□□□□□□□□□□ ■
□□□□□□□□□□ ■
□□□□□□□□□□ ■
□□□□□□□□□□
□□□□□□□□□□
そして,
フレームに次のようなスクリプトを書けば,
「簡易版スクロールバー」の「バー」の部分だけの完成です。
/////////////////////////////////////////////////////////////////
// データの用意
my_txt.text = "あいうえお\nか\nさ\nた\nな\nは\nま\nや\nら\nわ\nん";
//
// スクロール数 の初期化
var scr = 0;
// スクロールフラグの初期化
var scr_flg = 0;
//
// ---1行スクロールさせるための my_bar の移動量の算出---
// my_txt の最大スクロール数の取得
var max = my_txt.maxscroll;
// my_bar の全移動範囲を算出
var all = _root.my_txt._height-_root.my_bar._height;
// 1行スクロールさせるための my_bar の移動量の算出
var mov = all/max;
// trace(max);//←確認してみたりする...
//
// 1フレーム進む時間ごとに毎回実行
_root.my_bar.onEnterFrame = function() {
if (scr_flg == 0) {
// my_bar の座標を決定
_root.my_bar._y = _root.my_txt._y+_root.my_txt.scroll*_root.mov;
} else {
// my_txt のスクロール数を決定
_root.my_txt.scroll = Math.round((this._y-_root.my_txt._y)/_root.mov);
}
};
//
// バーをプレスしたとき
_root.my_bar.onPress = function() {
// スクロールフラグ を1にする
_root.scr_flg = 1;
// ドラッグ開始(中心に固定しない,左,上,右,下の移動範囲)
this.startDrag(false, this._x, _root.my_txt._y, this._x, _root.my_txt._y+_root.all);
};
// バーからマウスをアップしたとき
_root.my_bar.onRelease = function() {
_root.scr_flg = 0;
this.stopDrag();
};
// バーからドラッグアウトしたとき(onReleaseと同じ)
_root.my_bar.onDragOut = _root.my_bar.onRelease;
/////////////////////////////////////////////////////////////////
上記は,あくまでも 私流の簡易版 です。
あとは理解して,
▲ボタン と ▼ボタン も作れば良いということになります。
おそらく,これくらいな簡単なものは,
サッサと理解し,▲ボタン と ▼ボタン も作れる方でないと,
実際のスクロールバーの作成方法などはどのサイトも理解できないと思いますし,
カスタマイズもできないと思います。
その前に,
上記ぐらいのものはサッサと自作できるような方でないと,
ちゃんとしたスクロールバーは,
どんなサンプルや説明を見ても理解不能だと思いますよ。
スクロールバーに限らず,
たくさんのものを自分で考えて自作することです。
すると,UIScrollBarレベルのすごい物がそのうち作れるようになると思います(多分,かなり自信なし)。
UIScrollBar は Macromedia の開発者が寄り集って検討し,試作を繰りかえした結果の産物ですから,
なかなかあのレベルのものを作るのは難しいとは思いますけどね。
~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・
★ 以下は余談であり,本題かも。
Windows で Flash 8 をデフォルトの C:\Program Files にインストールした場合,
「C:\Program Files\Macromedia\Flash 8\ja\Configuration\Components\User Interface」
というフォルダに,
「UIScrollBar.swc」というファイルができます。
これが,UIScrollBar の本体です。
この 「UIScrollBar.swc」 をデスクトップなどにコピーして,
コピーしたものの拡張子を手動で .zip に変えてやります。
つまり 「UIScrollBar.zip」に名前を変更するということです。
それでその「UIScrollBar.zip」を圧縮解凍ソフトなどで解凍すると,
35個のファイルが出てきます。
「catalog.xml」や「LivePreview.swf」というファイルもありますが,
大半は拡張子 .asi というファイルです。
mx.controls.Button.asi
mx.controls.HScrollBar.asi
mx.controls.scrollClasses.ScrollBar.asi
~ 略 ~
mx.styles.StyleManager.asi
この .asi ファイルは実はテキストファイルで,
メモ帳などテキストエディタで見ることができます。
例えば1つめの「mx.controls.Button.asi」を開いてみると,
----------------------------------------
import mx.core.UIObject;
import mx.controls.SimpleButton;
import mx.core.UIComponent;
[Event("click")]
[TagName("Button")]
[IconFile("Button.png")]
intrinsic class mx.controls.Button extends mx.controls.SimpleButton
{
public function Button();
public var __label:String;
public var __labelPlacement:String;
public var _color;
public function _getIcon(Void):String;
public var _iconLinkageName:String;
[Bindable] [ChangeEvent("click")] public var _inherited_selected:Boolean;
public function _setIcon(linkage):Void;
public var borderW:Number;
public var btnOffset:Number;
public function calcSize(tag:Number, ref:Object):Void;
public var centerContent:Boolean;
public var className:String;
public var clipParameters:Object;
public function createChildren(Void):Void;
public function draw();
public var falseDisabledIcon:String;
public var falseDisabledSkin:String;
public var falseDownIcon:String;
public var falseDownSkin:String;
public var falseOverIcon:String;
public var falseOverSkin:String;
public var falseUpIcon:String;
public var falseUpSkin:String;
public function getBtnOffset(Void):Number;
public function getLabel(Void):String;
public function getLabelPlacement(Void):String;
public var hitArea_mc:MovieClip;
function get icon():String;
[Inspectable(defaultValue="")] function set icon(linkage);
public function init(Void):Void;
public var initIcon;
public function invalidateStyle(c:String):Void;
[Inspectable(defaultValue="Button")] function set label(lbl:String);
function get label():String;
public var labelPath:Object;
[Inspectable(enumeration="left,right,top,bottom"defaultValue="right")] function set labelPlacement(val:String);
function get labelPlacement():String;
static var mergedClipParameters:Boolean;
public function onRelease(Void):Void;
public function setColor(c:Number):Void;
public function setEnabled(enable:Boolean):Void;
public function setHitArea(w:Number, h:Number);
public function setLabel(label:String):Void;
public function setLabelPlacement(val:String):Void;
public function setSkin(tag:Number, linkageName:String, initobj:Object):MovieClip;
public function setView(offset:Number):Void;
public function size(Void):Void;
static var symbolName:String;
static var symbolOwner;
public var trueDisabledIcon:String;
public var trueDisabledSkin:String;
public var trueDownIcon:String;
public var trueDownSkin:String;
public var trueOverIcon:String;
public var trueOverSkin:String;
public var trueUpIcon:String;
public var trueUpSkin:String;
static var version:String;
public function viewSkin(varName:String):Void;
};
----------------------------------------
すごい行のスクリプトですが,
これは実はスクリプト本体ではなく,
クラスファイルの呼びだしと,変数の宣言部分だけです。
それに,UIScrollBar はスクリプトだけで動くわけはなく,
複雑なムービークリップの入れ子状態の構造とスクリプトが連携してまともに動くのです。
そんなものを一々解析もできませんし,解説もできません。
もし,解説できたら,UIScrollBarだけで分厚い本になってしまうと思いますし,
そんな本を売ってもおそらく誰も買いません。
ちゃんとしたスクロールバーの作り方を解説するなんて不可能なことがわかりますか?
そんなことをする時間があったら,
最初から UIScrollBar を何も文句を言わずに使うか,
文句があるのなら,簡易でも良いので,自分で考えて自作することです。
それが手っとり早いですよ。
簡易でも良いので,自分で考えて自作することができなければ,
上にも書きましたが,
スクロールバーに限らず,
たくさんのものを自分で考えて自作することです。
すると,UIScrollBarレベルのすごい物がそのうち作れるようになる....と思います(???)。
思えませんが,近い物は作れるようになると思います。
~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・
★★ 結局これが本題かも。
> 少々味気ないのでマウスホイール対応のスクロールバーを
ひょっとして,味気ないのは動きの問題ではなく,
UIScrollBar の見かけの問題でしょうか?
もしそうであれば,
次の方法でUIScrollBarの見かけだけを簡単に変更できますよ。
「ドキュメントのコンポーネントスキンの編集」
http://livedocs.macromedia.com/flash/8_jp/main/0 …
テキストフィールドに UIScrollBar を付けた段階で,
[ファイル]-[読み込み]-[外部ライブラリを開く] を選択して,
Windows で Flash 8 をデフォルトの C:\Program Files にインストールした場合,
C:\Program Files\Macromedia\Flash 8\ja\Configuration\ComponentFLA\SampleTheme.fla
のライブラリを読み込み,
そのライブラリ内の
「Flash UI Components 2」ライブラリフォルダ内の「SampleTheme」をステージ上に引きずりだして,
その▼や▲やバーの色などを塗りかえては「制御」→「ムービープレビュー」で確かめると,
UIScrollBar の外観が変わります。
「SampleTheme」をステージ上に引きずりだして,編集したあとは,ステージ上から消しておけば良いです。
単にこれだけのことだと, ActionScript や 最初から自作 など考えなくて良いので楽です。
返信が遅れて申しわけありません。
丁寧な説明、ありがとうございました。
スクロールバーの外観を変えたかったので、
非常にためになりました。
本当にご丁寧にどうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- gooブログ 記事の下にスクロールバーが表示される 2 2022/08/19 20:42
- その他(IT・Webサービス) このサイトのスクロール逆じゃないですか? 1 2022/10/05 20:48
- Photoshop(フォトショップ) 【Photoshop】画像拡大時に急激に画面外まで拡大してしまうのを制御したい 1 2023/08/25 03:04
- インターネット広告・アフィリエイト アフェリエイトサイト 作成について 5 2022/05/13 21:31
- その他(プログラミング・Web制作) パイソンでのプログラミングについて 3 2022/08/11 20:31
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- インターネットビジネス webライターになる為に、記事作成の勉強の他にSEO対策の勉強は要りますか webライターになる為に 2 2022/12/12 01:27
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- 会社・職場 今後の仕事について 閲覧ありがとうございます。 私は現在28歳の男性です。 自分が向いている仕事、続 3 2022/08/01 12:19
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XMLの&が&に変換されない
-
スクロールバーの自作の仕方
-
ランダムに4桁の数字を表示する...
-
全てのテキストボックスをセル...
-
四乗根を英語で言うと・・・
-
photoshopで書いた四角の枠の中...
-
python ボタンを押すと複数の関...
-
ActionScriptエディタを作りた...
-
ドラッグ&ドロップからの取得
-
クリックされたインスタンス以...
-
else if文の順序を変えることに...
-
「Me」を「Form1」にするとエラ...
-
グラデーションマスクのかけ方...
-
マスクをとるとオーバーフロー...
-
C言語でネットワーク範囲のIPア...
-
VBAユーザーホームテキストボッ...
-
ListActivityにて画像とテキス...
-
PDFからepubに変換するウェブサ...
-
DataGridのスクロールについて
-
Excel VBA によるマウス操作
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ランダムに4桁の数字を表示する...
-
外部テキスト(MTのエントリ)...
-
XMLの&が&に変換されない
-
スクロールバーの自作の仕方
-
外部複数テキスト読み込みのに...
-
Flash8 SharedObject
-
VBAユーザーホームテキストボッ...
-
photoshopで書いた四角の枠の中...
-
テキストボックスの中身をリセ...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
変数に256文字以上のテキストを...
-
IP Address 入力フォームについて
-
VBScriptでMsgBoxのYesNoボック...
-
else if文の順序を変えることに...
-
全てのテキストボックスをセル...
-
別のアプリケーションのテキス...
-
POIでのテキストボックス作成に...
-
テキストボックスにセルの値を...
-
マウス自体の移動量の取得
おすすめ情報