台灣最大程式設計社群網站
線上人數
3347
 
會員總數:246323
討論主題:189853
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> 如何建立可以動態load外部圖片與點選連結至指定網址?
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何建立可以動態load外部圖片與點選連結至指定網址?
價值 : 30 QP  點閱數:4404 回應數:18
樓主

Athena
門外漢
0 85
1100 251
發送站內信

捐贈 VP 給 Athena
各位大人 我要在flash上做4個可動態連結外部rul圖片的功能,且這四個圖片可在user點選了之後點到提定的網頁中
目前模擬的做法是在場景上加入一個影片片段名稱為Pic,並在圖層1的動作中寫上AS:
loadMovie("http://tw.i5.yimg.com/i/tw/marketing/tree/60x60_2.gif","Pic");
這樣是有把該圖片LOAD進來 不能控制它的位置 也不知道如何做出可以連選就選到指定網頁的功能
不知各位FLASH高手是否有更好的作法,請多多指教~ 謝謝!!!

搜尋相關Tags的文章: [ MovieClip ] , [ GetUrl ] , [ loadMovie ] ,
本篇文章發表於2007-07-27 11:41
1樓
回應

白果喵
捐贈 VP 給 白果喵 檢舉此回應
>不能控制它的位置
loadMovie在_root是預設會放在左上(x:0,y:0)..而大小是是圖片的大小....
你可用with來控制他的


>也不知道如何做出可以連選就選到指定網頁的功能
這句看不明白...0.0
是指用getURL("http://blueshop.com.tw","_self");嗎...
本篇文章回覆於2007-07-28 11:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

BlackJK
檢舉此回應
另一個變通的辦法:
本篇文章回覆於2007-07-28 20:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
請問BlackJK大大
您第6行button_mc.PictureMC.loadMovie("http://tw.i5.yimg.com/i/tw/marketing/tree/60x60_2.gif","Pic");
中的"Pic"是我要先新增一個實體影片叫"Pic"才能用嗎?
不然我看code內沒有任何物件是叫"pic" 還是是可以任意取不相干的名稱就好了?
本篇文章回覆於2007-07-30 11:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Super-Tomato
檢舉此回應
Pic這個影片片段的註冊點就是你外部載入圖片的座標位置
建議使用Flash提供的MovieClipLoader類來載入外部圖片或swf..
本篇文章回覆於2007-07-30 15:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
請問那我var button_mc:MovieClip = _root.createEmptyMovieClip("button_mc", _root.getNextHighestDepth
我有4個用迴圈跑出4個createMovieClip,要怎麼宣告其名稱才能符合在迴圈中?Pro1、Pro2、Pro3、Pro4
for (var Q = 0; Q<4; Q++) {
var ProNo:Number = random(GetECNewProductCount);
var ProI:MovieClip = _root.createEmptyMovieClip("ProI", _root.getNextHighestDepth());
ProI._x = xx;
ProI._y = 10;
ProI.createEmptyMovieClip("ProII", 0);
ProI.ProII.loadMovie("http://tw.gamashoponline.gamania.com/Maintain/Files/ProductPicture/"+ array[ProNo][4], "Pic"+Q.toString);
var label1:TextField = ProI.createTextField("label1", 1, 0, 130, 150, 20);
label1.text = array[ProNo][2];
var label2:TextField = ProI.createTextField("label2", 2, 40, 150, 150, 20);
label2.text = "NT$" + array[ProNo][3];
xx += 150;
}
且那個create的movieclip不能控制它顯示的大人寬度高度耶!我用ProI._height=50;ProI._width=50;它反而變空白
怎麼會這樣呢~~~ >"<
本篇文章回覆於2007-07-31 10:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

BlackJK
檢舉此回應
1. toString 是函數,要打 Q.toString() 才會是你要的值。 或是直接用 "Pic"+Q 也可以

你可以用 trace( Q.toString ); 跟 trace( Q.toString() ) 跑看看,分辨一下。


2. 變空白應該不是因為你改了size

這裡也要把名稱區分一下才行,因為建立的空MC都是放在_root上的
"ProI" 改成 "ProI"+Q



3. array[ProNo][4] ← 變數這樣命名不好喔....最好避免用到保留字




以上是從你po的程式碼找到的問題,用Flash8改正後可以執行,
有4個 MovieClip、可載入圖片、可以縮放。
本篇文章回覆於2007-07-31 11:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
TO BlackJK 那個MovieClip 宣告方式
var xx:Number = 1;
//亂數取出四個ProNo值出來
for (var Q = 0; Q<4; Q++) {
var ProNo:Number = random(GetECNewProductCount);
var "Pic"+Q :MovieClip = _root.createEmptyMovieClip(Q.toString(), _root.getNextHighestDepth());
"Pic"+Q ._x = xx;
"Pic"+Q ._y = 10;
"Pic"+Q .createEmptyMovieClip("ProII", 0);
ProI.ProII.loadMovie("http://tw.gamashoponline.gamania.com/Maintain/Files/ProductPicture/"+arrayProDTL[ProNo][4], "Pic"+Q.toString);
var label1:TextField = "Pic"+Q .createTextField("label1", 1, 1, 130, 130, 20);
label1.text = arrayProDTL[ProNo][2];
var label2:TextField = ProI.createTextField("label2", 2, 40, 150, 130, 20);
label2.text = "NT$"+arrayProDTL[ProNo][3];
xx += 150;
"Pic"+Q .onPress = function() {
trace("http://tw.gamashoponline.gamania.com/ProductDetail.aspx?CategoryID="+ arrayProDTL[ProNo][1]+"&ID="+ arrayProDTL[ProNo][0]);
};
}
我有試過了 都會出現error 如下:
**錯誤** 場景=場景 1、圖層=圖層 1、影格=1:行 29: 需要識別符號
var "Pic"+Q :MovieClip = _root.createEmptyMovieClip(Q.toString(), _root.getNextHighestDepth());
**錯誤** 場景=場景 1、圖層=圖層 1、影格=1:行 30: 指定運算符號的左邊必須是變數或屬性。
"Pic"+Q ._x = xx;
**錯誤** 場景=場景 1、圖層=圖層 1、影格=1:行 31: 指定運算符號的左邊必須是變數或屬性。
"Pic"+Q ._y = 10;
且,我仍然不能改變它的寬高限制其大小,不知大人您是怎麼做到的?
本篇文章回覆於2007-07-31 11:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

BlackJK
檢舉此回應

本篇文章回覆於2007-07-31 12:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
to BlackJK 大大:
這樣是ok的!
for (var Q = 0; Q<4; Q++) {
var ProNo:Number = random(GetECNewProductCount);
var ProI:MovieClip = _root.createEmptyMovieClip("Pic"+Q.toString(), _root.getNextHighestDepth());
ProI ._x = xx;
ProI ._y = 10;
ProI .createEmptyMovieClip("ProII", 0);
ProI.ProII.loadMovie("http://tw.gamashoponline.gamania.com/Maintain/Files/ProductPicture/"+arrayProDTL[ProNo][4], "Pic"+Q.toString());
var label1:TextField = ProI.createTextField("label1", 1, 1, 130, 130, 20);
label1.text = arrayProDTL[ProNo][2];
var label2:TextField = ProI.createTextField("label2", 2, 40, 150, 130, 20);
label2.text = "NT$"+arrayProDTL[ProNo][3];
xx += 150;
ProI.onPress = function() {
getURL("https://tw.gamashoponline.gamania.com/ProductDetail.aspx?CategoryID="+ array[ProNo][1]+"&ID="+ array[ProNo][1], "_self");
};
}
但是 我在ProI.onPress = function()內無法指定4個不同的Url給它們 >"< 會四個都是同樣的連結
本篇文章回覆於2007-07-31 12:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

BlackJK
檢舉此回應
array[ProNo][1]+"&ID="+ array[ProNo][1] ??

還是

array[ProNo][Q]+"&ID="+ array[ProNo][Q]
本篇文章回覆於2007-07-31 12:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
sorry 剛才貼到舊code 是這樣才對
getURL("https://tw.gamashoponline.gamania.com/ProductDetail.aspx?CategoryID="+ arrayProDTL[ProNo][1]+"&ID="+ arrayProDTL[ProNo][0], "_self");
本篇文章回覆於2007-07-31 12:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

BlackJK
檢舉此回應
你要的是隨機連到某一頁吧....
var ProNo:Number = random(GetECNewProductCount);


我沒辦法幫你檢查到變數 GetECNewProductCount
請你自已先確認一下這個變數裡的值是否正確


本篇文章回覆於2007-07-31 12:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
有滴~ 都是有值的哦!
我有trace過了
我在想是不是因為每個MovieClip都叫ProI 所以才會在跑完迴圈後 都是同樣的LINK URL >"<
本篇文章回覆於2007-07-31 12:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
最有價值解答

BlackJK
檢舉此回應
哈~~ 原來是我以前也犯過的錯




要把每個按鈕想要的連結各自記錄下來
不然看起來每個按鈕執行的是不同的 onPress function
但是每個 function 實際上執行的時後抓的是同一個 url
本篇文章回覆於2007-07-31 12:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
哇~~完成了!可以了~~ yayaya!!!完成碼分享一下,這都要感謝BlackJK大人的指導~ 超級感恩~~
var xx:Number = 1;
//亂數取出四個ProNo值出來
for (var Q = 0; Q<4; Q++) {
var ProNo:Number = random(GetECNewProductCount);
var ProI:MovieClip = _root.createEmptyMovieClip("Pic"+Q.toString(), _root.getNextHighestDepth());
with (ProI) {
ProI._x = xx;
ProI._y = 10;
}
ProI.createEmptyMovieClip("ProII", 0);
ProI.ProII.loadMovie("http://tw.gamashoponline.gamania.com/Maintain/Files/ProductPicture/"+arrayProDTL[ProNo][4], "Pic"+Q.toString());
var label1:TextField = ProI.createTextField("label1", 1, 1, 130, 130, 20);
label1.text = arrayProDTL[ProNo][2];
var label2:TextField = ProI.createTextField("label2", 2, 40, 150, 130, 20);
label2.text = "NT$"+arrayProDTL[ProNo][3];
xx += 150;
ProI.UrlIndex = ProNo;
ProI.onPress = function() {
getURL("https://tw.gamashoponline.gamania.com/ProductDetail.aspx?CategoryID="+arrayProDTL[this.UrlIndex][1]+"&ID="+arrayProDTL[this.UrlIndex][0], "_self");
};
}} else {
trace("WebService載入失敗!");
}

不過 我還是不能限制ProI的大小,因載入的圖形大小不同,呈現時會出現有的大有的小,有的蓋到旁邊的圖 >"<
本篇文章回覆於2007-07-31 14:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.