【AS3】FlashDevelop【フリー】 (601レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
465
(6): 2010/11/09(火)17:28 ID:aID2qAbN(1/7) AAS
FlashDevelop+FlexSDKでリキッドレイアウトのサイトを目指して頓挫。
識者の意見を聞きたい。

まず前提としてFlashは持っていない(Mac版ver.8ならある)
FlashDevelopを知って3日目、本屋でFlashDevelop完全ガイド購入して2日目。
HTMLとCSSは一通り、JavaScriptはコピペ改変程度の理解。AS3は勉強開始したばかり。
ガイド本の作例サイトの画像差し替えでオリジナルサイト出来た!と喜んでたが、
ウィンドウのリサイズで上下、左右に隙間が出来ることに不満を持ちリキッドレイアウトへ。

ちなみにリキッドレイアウトとはウィンドウのサイズに合わせてコンテンツが伸び縮みするもの。
とりあえず外部リンク[html]:www.alwaysfinetuning.comを参考に、
本のサンプルを改変してみたが、エラーが出て、解決策もわからない。
次レスに、理解できている内容、次々レスにつまづいている内容、
次々々レスにエラーの内容と考察を書く。
466
(2): 465 2010/11/09(火)17:35 ID:aID2qAbN(2/7) AAS
>>465の続き(2/5)
package
{
import flash.display.*;
import flash.events.*;
public class Main extends Sprite
{
[Embed(source = 'assets/bg.png')]
private static const BG:Class;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var bg:Bitmap = new BG();
addChild(bg);
}
}
}
この中身は理解している
一語一句とまでは行かないが、各行の意味は理解。
HTMLで言うところの<html><body background="hoge.jpg"></body></html>の状態。
467
(2): 465 2010/11/09(火)17:39 ID:aID2qAbN(3/7) AAS
>>465の続き(3/5)
エラーの出ている内容
ここまでは>>464と一字一句一緒なので省略
private function init(e:Event = null):void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = "TL"
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var bg:Bitmap = new BG(); //25行目
addChild(bg);
var parH:Number = stage.stageHeight / 542; //背景画像の高さ
var parW:Number = stage.stageWidth / 962; //背景画像の幅
if (parH < parW) {bg.scaleX = parW;bg.scaleY = parW;
}
else {bg.scaleX = parH;bg.scaleY = parH;
}
stage.addEventListener(Event.RESIZE, resized);
}
468
(1): 465 2010/11/09(火)17:40 ID:aID2qAbN(4/7) AAS
>>467の続き(4/5)
private function resized(e:Event):void {

var parH:Number = stage.stageHeight / 542; //背景画像の高さ
var parW:Number = stage.stageWidth / 962; //背景画像の幅

if (parH < parW) {bg.scaleX = parW;bg.scaleY = parW; //45行目
}
else {bg.scaleX = parH;bg.scaleY = parH; //47行目
}

}

}
}
469
(1): 465 2010/11/09(火)17:47 ID:aID2qAbN(5/7) AAS
>>465-468の続き(5/5)連投スマソ、最後です。
Error: Access of undefined property bg.(45,47行目に対して各2回)

わからないなりに推測すると、
関数private function init()で定義した変数「bg」を、
別のprivate function resized()でそのまま使ったから、
見つかりませんと言われたのだろう。

それならってことでvar bg:Bitmap = new BG();のvarを取ると、
Main.as(25): col: 20 Error: Illegal assignment to class Bitmap.
って怒られる。

パスの指定が間違ってるとかそういうことか?
はたまた、JSの様にresize(bg);
function resize(hoge){}みたいに変数の受け渡しするのか?
その場合、e:Eventとvoidはどうしたらいいのか?
そもそもAS3の考え方を理解できていない気もする。

詳しい人の意見を聞かせてください。
471: 465 2010/11/09(火)18:10 ID:aID2qAbN(6/7) AAS
>>469
自己解決しました。
ソースは後ほど。

>>470
ありがとうございます。
今回は偶然にも運良く解決しましたが、仰る通りすぐ別の壁に当たりそうです。
AS3の基礎を学んでから出直します。
472: 465 2010/11/09(火)18:18 ID:aID2qAbN(7/7) AAS
解決ソース。>>466のfunction initの中身を以下に書き換える。要するにfunction resizedを内包した。
private function init(e:Event = null):void
{
stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = "TL"
removeEventListener(Event.ADDED_TO_STAGE, init);
var bg:Bitmap = new BG();
addChild(bg);
var parH:Number = stage.stageHeight / 542;
var parW:Number = stage.stageWidth / 962;
if (parH < parW) {bg.scaleX = parW;bg.scaleY = parW;}
else {bg.scaleX = parH;bg.scaleY = parH;}
function resized(e:Event):void {
var parH:Number = stage.stageHeight / 542;
var parW:Number = stage.stageWidth / 962;
if (parH < parW) {bg.scaleX = parW;bg.scaleY = parW;}
else {bg.scaleX = parH;bg.scaleY = parH;}
}
stage.addEventListener(Event.RESIZE, resized);
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.021s