下記のサイトのように画像にマウスが乗ったら、ズームするようにしたいのですが、どのようなスクリプトを書いているのでしょうか?
http://www.bobscube.com/
もしくは下記のサイトのようにクリックすると画像がズームするサイト。スクリプト的には同じ(マウスクリックとマウスオーバーの違い)じゃないかと思うのですが・・・。
http://www.opfa.org/
単純に画像がズームするだけなら、こちらのサイトに載っていた↓で出来るのですが、上記サイトのように滑らかにズームする方法が分かりません。
onClipEvent (load) {
this._yscale = 100;
this._xscale = 100;
}
on (rollOver) {
this._yscale = 200;
this._xscale = 200;
}
on (rollOut) {
this._yscale = 100;
this._xscale = 100;
}
ご教授宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
#1,2です。
補足で書いていらっしゃる意味がわかりました。
だいたい横500~600×縦350~4500ピクセルくらいのステージのドキュメントを新規作成してください(デフォルトぐらい)。
その,ステージの真ん中ぐらいに,画面の面積の4分の1くらい(縦横がそれぞれ半分くらい)のムービークリップを用意してください。
まぁ,適当です。そんな感じだと何でも良いです。
そのムービークリップのアクションパネルに,
----------------------------------
onClipEvent (load) {
yScl = this._yscale;
xScl = this._xscale;
yPos = this._y;
xPos = this._x;
}
on (rollOver) {
this.onEnterFrame = function() {
this._yscale *= 1.1;
this._xscale *= 1.1;
this._y += (yPos-_root._ymouse)*0.1;
this._x += (xPos-_root._xmouse)*0.1;
if (this._yscale>=yScl*2) {
this._yscale = yScl*2;
this._xscale = xScl*2;
}
if (this._y>=yPos+100) {
this._y = yPos+100;
}
if (this._y<=yPos-100) {
this._y = yPos-100;
}
if (this._x>=xPos+100) {
this._x = xPos+100;
}
if (this._x<=xPos-100) {
this._x = xPos-100;
}
};
}
on (rollOut, dragOut) {
this.onEnterFrame = function() {
this._yscale *= 0.9;
this._xscale *= 0.9;
this._y += (yPos-this._y)*0.3;
this._x += (xPos-this._x)*0.3;
if (this._yscale<=yScl) {
this._yscale = yScl;
this._xscale = xScl;
this._y = yPos;
this._x = xPos;
this.onEnterFrame = null;
}
};
}
--------------------------------
というスクリプトを,コピペして,パブリッシュしてみてください。
#1の下の方のスクリプトの変形です。
決してうまい書き方とは言えません。
>> 端の方にマウスを移動した場合、そちらに画像も移動する
>> マウスがロールアウトしたら、ズームアウトするというのは残したまま
と書かれている感じの動きをすると思います。
2 とか 100 とか 0.9 とか 0.3 とか,それらしくするように数値を適当に書いていますが,
これらの数をかえると,拡大率や移動スピードなどが変わるはずです。
画面の面積の4分の1くらいのムービークリップだと,ムービークリップの端が見えると思いますが,これをステージより若干大きめにすると,ムービークリップの端は見えなくなると思います。
適当に調節してください。
でも,あーでもないこうでもないと,いろいろ考えて,実現していくのがFlashの面白さであり,Flashの奥深さだと思います。
書いたサンプルも,どこかにあった公式とかではなく,知っている言葉を組み合わせて我流で考えてみただけです。
といっても,「IF文」と「onEnterFrame」とを組み合わせただけですけどね。
最初,質問者さまが提示したスクリプトと基本は同じでしょう。だから考え方は合っていると思います。
スクリプトなんて外には見えません。ちゃんと動けば良いのです。いろいろ考えてやってみてください。
sassakunさま
本当にこの度はありがとうございました!
おっしゃられている通り、今後はすぐに誰かに聞くのではなく、自分でいろいろ考えてイメージ通りのスクリプトを作っていきたいと思います!
No.2
- 回答日時:
#1で答えた者です。
補足に書かれている意味が,よく飲み込めないのですがどういうことでしょうか。
>> ズームしたあとに(ズームした大きさの画像のままの状態)
ここまではわかります。
>>マウスを移動させるのは、どうしたらできるのか
ここがわかりません。
ムービークリップにマウスを重ね,大きくしたあとに,マウスを移動させても大きな状態のままを維持するのであれば,スクリプトの下半分
on (releaseOutside, rollOut) {
this.onEnterFrame = function() {
~~~省略~~~
this.onEnterFrame = null;
};
}
の部分をなくせばいいわけですし…… ???
この回答への補足
説明不足で申し訳ありません・・・。それと、お礼を言うのを忘れていました、ありがとうございます!!
言いたかったことは、既出の下記のサイトのように、画像がズームしたあとに、たとえば端の方にマウスを移動した場合、そちらに画像も移動する、というふうにしたいのです。いまは画像がズームしたあとは、画面が固定されたままの状態で、画像範囲内(ムービークリップの範囲内)でマウスを移動することができませんので・・・。 もちろん画像上(ムービークリップ)からマウスがロールアウトしたら、ズームアウトするというのは残したままで、ということです。
すみません、もちろん最初に質問したことに対するお答えはすでにいただけているので、この質問にも答えていただくのはルール違反かもしれませんが・・・、宜しくお願い致します。
http://www.bobscube.com/
No.1
- 回答日時:
それにしても,キモチ悪いFlashですね。
出来はきれいですし,すごいスクリプトなんですけど,船酔いしそうな…
他との絡みが出てきたり,ActionScriptだけではどうにもならない,作図の部分もありますけど,
単純にムービークリップにマウスか乗ったとき,徐々に拡大,
マウスが離れたとき,元のサイズに徐々に戻るというスクリプトを書いておきます。
基本は,質問者さまが書かれている,スクリプトと同じです。
ただ,ゴールに一気に向かわず,徐々にという部分を付け加えているだけです。
他との絡みはないものとするので,ムービークリップのインスタンス名はあえて付けていません。
ムービークリップを適当に作って,以下のスクリプトをコピペしてみてください。
徐々に大きさが変化すると思います。
---サンプル1(コピペ可能)----------
onClipEvent (load) {
yScl = this._yscale;
xScl = this._xscale;
}
on (rollOver) {
this.onEnterFrame = function() {
this._yscale *= 1.1;
this._xscale *= 1.1;
if (this._yscale>=yScl*3) {
this.onEnterFrame = null;
}
};
}
on (releaseOutside, rollOut) {
this.onEnterFrame = function() {
this._yscale *= 0.9;
this._xscale *= 0.9;
if (this._yscale<=yScl) {
this._yscale = yScl
this._xscale = xScl
this.onEnterFrame = null;
}
};
}
-------------------------------
---解説(コピペは多分不可能)----
//ムービークリップ(MC)がロード(表示)されたとき
onClipEvent (load) {
//変数ySclとxSclにこのMCの最初の座標を確保
yScl = this._yscale;
xScl = this._xscale;
}
//このMCにロールオーバーで
on (rollOver) {
//フレームレート毎に1回以下を計算※
this.onEnterFrame = function() {
//このMCのXとYスケールを1.1倍に
this._yscale *= 1.1;
this._xscale *= 1.1;
//もし,Yスケールが元の3倍になったら
if (this._yscale>=yScl*3) {
//この計算終わり
this.onEnterFrame = null;
}
};
}
//このMCからマウスが離れたら
on (releaseOutside, rollOut) {
//フレームレート毎に1回以下を計算※
this.onEnterFrame = function() {
//このMCのXとYスケールを0.9倍に
this._yscale *= 0.9;
this._xscale *= 0.9;
//もし,Yスケールが元の大きさに戻ったら
if (this._yscale<=yScl) {
this._yscale = yScl
this._xscale = xScl
//この計算終わり
this.onEnterFrame = null;
}
};
}
---解説終わり--------------------
という物です。
もちろん,他の書き方は無数にあります。
//フレームレート毎に1回以下を計算※
の部分ですが,onEnterFrameメソッドと言って,
ドキュメントのプロパティで設定したフレームレート(デフォルトでは1/12秒)に1回{ }でくくられた中の計算をします。
MCの位置を,マウスに近づけたいなど,位置まで変える場合は以下のようなスクリプトになります。
---サンプル2(コピペ可能)----------
onClipEvent (load) {
yScl = this._yscale;
xScl = this._xscale;
yPos = this._y;
xPos = this._x;
}
on (rollOver) {
yMou = _root._ymouse;
xMou = _root._xmouse;
this.onEnterFrame = function() {
this._yscale *= 1.1;
this._xscale *= 1.1;
this._y += (yMou-this._y)*0.1;
this._x += (xMou-this._x)*0.1;
if (this._yscale>=yScl*3) {
this.onEnterFrame = null;
}
};
}
on (releaseOutside, rollOut) {
this.onEnterFrame = function() {
this._yscale *= 0.9;
this._xscale *= 0.9;
this._y += (yPos-this._y)*0.3;
this._x += (xPos-this._x)*0.3;
if (this._yscale<=yScl) {
this._yscale = yScl;
this._xscale = xScl;
this._y = yPos
this._x = xPos
this.onEnterFrame = null;
}
};
}
-------------------------------
まぁつまり,動かしたいMCのプロパティが増えるごとに,変数やスクリプトも増えるわけです。
あくまでも例ですから,他にも書き方はありますし,場合によって変わるので,それぞれ,その都度考えるしかないですね。
この回答への補足
すみません・・・ズームしたあとに(ズームした大きさの画像のままの状態)マウスを移動させるのは、どうしたらできるのかも教えていただけると助かります。何から何まで聞いてすみません。・・・可能だったらで構いません・・・。
補足日時:2005/06/13 01:34お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- WordPress(ワードプレス) ワードプレスの403エラーについて 2 2023/03/06 14:38
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- 英語 is written とwas written この本は英語で書かれています。は、 This boo 3 2022/12/21 21:58
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- 英語 Statistically significant differences (p < 0.05), 5 2022/05/03 01:09
- デジタルカメラ SONYの全画素超解像ズームについて 4 2023/03/27 22:12
- 画像編集・動画編集・音楽編集 Blender 視点の操作について 1 2022/10/01 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でのマウスを移動とマウス...
-
UWSCのBTN関数について。
-
photoshopで書いた四角の枠の中...
-
VBSでMid関数を使ったらエラー...
-
マスクをとるとオーバーフロー...
-
変数に256文字以上のテキストを...
-
OpenGLのグラデーションについて
-
VBAで改行の入ったデータの正規...
-
別のアプリケーションのテキス...
-
'2465'指定した式で参照してい...
-
VBAからPDFのテキストフィールド
-
[VBS] 自分自身が改竄されてい...
-
ZWCAD CUIXとLISPの関係について
-
VB6.0で、フォームから、別のフ...
-
VBScriptでMsgBoxのYesNoボック...
-
pdfのテキスト全文コピー、テキ...
-
PythonでSetWindowPosを使うに...
-
【ExcelVBA】ファイル名をセル...
-
VB6.0 でメニューを作りたいん...
-
HTML版とは・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マウス自体の移動量の取得
-
画面の範囲選択
-
C言語でのマウスを移動とマウス...
-
楕円の軌道に傾斜をつける方法...
-
ステージ上の中心へ
-
Suzkaでダイナミックテキストに...
-
ActionScript2.0での座標
-
マウスオーバー(クリック)画...
-
ActionScript■指定回数でループ...
-
シンボルをドラッグアンドドロ...
-
ボタン化されたMCの移動
-
startDrag()について
-
角度を指定して回転
-
マウスオーバーで画像ズーム(...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
VBScriptでMsgBoxのYesNoボック...
-
python ボタンを押すと複数の関...
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
おすすめ情報