最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flash as3:絕對(duì)坐標(biāo)與相對(duì)坐標(biāo)

互聯(lián)網(wǎng)   發(fā)布時(shí)間:2008-10-06 01:25:22   作者:佚名   我要評(píng)論
一個(gè)程序員寫(xiě)一個(gè)平面的游戲,一般情況下是看不到UI界面的,里面的每個(gè)控件和圖像的移動(dòng)和位置都是通過(guò)代碼來(lái)實(shí)現(xiàn),很多團(tuán)隊(duì)把這個(gè)數(shù)據(jù)的任務(wù)交給了美工,美工在發(fā)圖的時(shí)候就把位置都拍好,并且給程序員。通常這里也有兩種模式,一個(gè)是給絕對(duì)坐標(biāo)的,這適用于屏幕大小不會(huì)改
一個(gè)程序員寫(xiě)一個(gè)平面的游戲,一般情況下是看不到UI界面的,里面的每個(gè)控件和圖像的移動(dòng)和位置都是通過(guò)代碼來(lái)實(shí)現(xiàn),很多團(tuán)隊(duì)把這個(gè)數(shù)據(jù)的任務(wù)交給了美工,美工在發(fā)圖的時(shí)候就把位置都拍好,并且給程序員。通常這里也有兩種模式,一個(gè)是給絕對(duì)坐標(biāo)的,這適用于屏幕大小不會(huì)改變的,長(zhǎng)寬高和位置都是寫(xiě)死不變的。但是這種模式的程序往往比較小型,相反更多的都是相對(duì)坐標(biāo),這對(duì)于Flash版本的客戶端來(lái)說(shuō)其實(shí)是很容易的事情,那么這個(gè)坐標(biāo)到底怎么設(shè)置,經(jīng)歷折磨了我很久。
首先就是直接設(shè)置
mc1.x=??; mc1.y=??;
這樣mc1就設(shè)置好了,as3動(dòng)態(tài)new出來(lái)的mc是沒(méi)有width的,也沒(méi)有height,而他的長(zhǎng)和高本身也是不定,假設(shè)你在里面加了一張 300x200的圖片,那么他的w和h就會(huì)變成300和200,如果你又加了一張400x100的圖片,他的w就會(huì)變成400而h不變,這在于相對(duì)坐標(biāo)上對(duì)應(yīng)是復(fù)雜了很多的,比如我要讓這個(gè)mc完全居中要怎么做?
如果舞臺(tái)是1000的寬度,要?jiǎng)≈斜容^容易 mc1.x = (1000-400)/2; 這樣就居中了,來(lái)看原理,首先我們要舞臺(tái)居中,很容易就想到一個(gè)數(shù)字 1000/2 結(jié)果是500 但是x對(duì)舞臺(tái)的中央是不行的 x是左上角,所以這個(gè)答案還要再減去 400/2 相當(dāng)于mc1再左移自己的一般的位置,這樣就完全劇中了,答案就是 1000/2-400/2 那么算式就演化出來(lái)了。
所以要居中的答案似乎已經(jīng)出來(lái)了 (stage.stageWidth-mc.width)/2 這個(gè)坐標(biāo)一定是最中間的,但是真的如此嗎?如果舞臺(tái)變了呢?如果mc的大小變了呢?他還居中嗎?這樣想想依然是的。
我曾經(jīng)也是非常理想的認(rèn)為這是最好的方法,但是實(shí)踐告訴我,我錯(cuò)了,當(dāng)我需要在mc中繼續(xù)增加原件圖片,并且這個(gè)圖片也要居中,并且這個(gè)圖片要在mc內(nèi),并且這個(gè)圖片可能大于mc也可能小于mc。來(lái)看看情況是怎么樣的。
如果mc2在mc1里,并且mc1大于mc2,很好 mc2.x = (mc1.width-mc2.x)/2; 非常好,很顯然他們對(duì)得很齊,并且mc1不需要在舞臺(tái)上移動(dòng)。但是另一種情況呢?通過(guò)這個(gè)算法也可以得到他們的坐標(biāo),但是這個(gè)時(shí)候mc1.width已經(jīng)不在是原來(lái)的了,因?yàn)閙c2的width比它大,所以顯然是出錯(cuò),算出來(lái)的結(jié)果是0,那么大的圖片就會(huì)和小的圖片”左對(duì)齊”了,而更新了舞臺(tái)上mc1的位置后mc1的位置是居中了,可是里面的卻錯(cuò)得一塌糊涂,你又要重新對(duì)齊原來(lái)的圖像,2個(gè)文件就要來(lái)回對(duì)其,麻煩不錯(cuò),很容易對(duì)了這個(gè)忘了那個(gè),最終結(jié)果就是圖像莫名其妙錯(cuò)位,痛苦。曾經(jīng)思考過(guò)很多,圖像越多就越麻煩。
這個(gè)時(shí)候很多程序員并不會(huì)跳出來(lái),會(huì)一直想如何對(duì)其,然后一直修復(fù)這個(gè)問(wèn)題,其實(shí)錯(cuò)了,我們都錯(cuò)了,解決問(wèn)題有時(shí)候不可以死腦筋,如果換思路會(huì)如何?有想過(guò)?換過(guò)以后卻是如此的簡(jiǎn)單,我們?cè)賮?lái)看看原理。
首先我們把檢測(cè)他的大小,然后運(yùn)算居中,但是大小會(huì)變,算了外面不能顧及里面,算了里面不能顧及外面,那能不能不算呢!答案是肯定的。其實(shí)無(wú)論如何大小變有一個(gè)點(diǎn)是永遠(yuǎn)對(duì)著舞臺(tái)中心的,那就是mc的中心,但是width的大小在變,如何才能讓中心不變呢,這時(shí)我想到了一個(gè)關(guān)鍵字(注冊(cè)點(diǎn)),在FlashIDE里也許這個(gè)名詞很熟悉,但是到了代碼里可能很難聯(lián)想到這個(gè)關(guān)鍵字,所以我們要做的是讓mc的中心點(diǎn)永遠(yuǎn)是0點(diǎn)就可以了。也就是說(shuō)00點(diǎn)是中間而不是左上角!這個(gè)時(shí)候我們?cè)賮?lái)對(duì)齊看看??
mc1.x = stage.stageWidth/2;
mc2.x = -(mc2.width/2);
現(xiàn)在再來(lái)看看,無(wú)論里里面是大是小,永遠(yuǎn)直接左移,先把自己的中心確定,然后在把這個(gè)中心對(duì)到舞臺(tái)的中心,居中行為最終外美的完成了。當(dāng)然左對(duì)齊右對(duì)齊都可以用這個(gè)思路,你既然設(shè)置是00點(diǎn)的位置,那就先讓你的圖像和00對(duì)齊,再讓00去對(duì)別的地方,這樣迭代就不容易出錯(cuò)了。原來(lái)就是如此簡(jiǎn)單的問(wèn)題,因?yàn)殚_(kāi)始的時(shí)候就錯(cuò)了,于是越來(lái)越麻煩,很多時(shí)候問(wèn)題都是類(lèi)似的,一定要注意。此問(wèn)題經(jīng)歷深刻,故發(fā)表一下!最后來(lái)句廢話,有興趣轉(zhuǎn)載請(qǐng)著名出處,謝謝!謝謝支持!謝謝大家。

相關(guān)文章

  • flash cs6鼠標(biāo)跟隨效果實(shí)現(xiàn)代碼分享

    flash cs6想要實(shí)現(xiàn)鼠標(biāo)跟隨效果?該怎么制作呢?今天我們就來(lái)看看使用as2.0實(shí)現(xiàn)鼠標(biāo)跟隨效果的教程,需要的朋友可以參考下
    2019-05-19
  • Flash cs6怎么使用代碼輸入中英文文本?

    Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來(lái)輸入文本,該怎么使用代碼輸入文本呢?請(qǐng)看下文詳細(xì)的教程,需要的朋友
    2018-03-11
  • flash as3.0怎么定義抽象類(lèi)和抽象?

    flash as3.0抽象類(lèi)怎么定義? as3.0中有很多抽象類(lèi),該怎么定義抽象類(lèi)和抽象方法呢?下面我們就來(lái)看看簡(jiǎn)單的例子,需要的朋友可以參考下http://m.fzitv.net/softs/408402.
    2018-02-28
  • flash cs6中怎么使用ActionScript3.0?

    flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來(lái)看看詳細(xì)的教程,需要的朋友可以參考下
    2018-01-25
  • Flash中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?

    本教程給大家分享一個(gè)Flash小教程,教大家在Flash CS6中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?方法很簡(jiǎn)單,感興趣的朋友歡迎前來(lái)一起分享學(xué)習(xí)
    2018-01-12
  • Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置?

    本教程教腳本之家的ActionScript教程學(xué)習(xí)者在Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置,教程講解的詳細(xì),感興趣的朋友歡迎前來(lái)分享學(xué)習(xí)
    2017-11-20
  • 在Flash CS6中使用with函數(shù)繪制背景圖教程

    本教程教腳本之家的ActionScript教程學(xué)習(xí)者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細(xì),方法也不難,非常適合Flash新手入門(mén)學(xué)習(xí)
    2017-11-18
  • Flash怎么設(shè)置元件坐標(biāo)?flash使用代碼設(shè)置元件的坐標(biāo)的教程

    Flash怎么設(shè)置元件坐標(biāo)?flash中導(dǎo)如的元件需要添加坐標(biāo),該怎么定位元件坐標(biāo)呢?下面我們就來(lái)看看flash使用代碼設(shè)置元件的坐標(biāo)的教程,需要的朋友可以參考下
    2017-10-11
  • Flash怎么制作來(lái)回?fù)u擺的花朵的動(dòng)畫(huà)?

    Flash怎么制作來(lái)回?fù)u擺的花朵的動(dòng)畫(huà)?Flash中想要給花朵制作一段搖擺的動(dòng)畫(huà)效果,該怎么制作呢?下面我們就來(lái)看看詳細(xì)的教程,很簡(jiǎn)單,需要的朋友可以參考下
    2017-05-23
  • Flash怎么制作流動(dòng)七彩色的文字?

    Flash怎么制作流動(dòng)七彩色的文字?想要讓文字動(dòng)起來(lái),該怎么使用flash給文字制作一個(gè)流動(dòng)七彩色的動(dòng)畫(huà)呢?下面我們就來(lái)看看詳細(xì)的教程,需要的朋友可以參考下
    2017-04-23

最新評(píng)論

秦皇岛市| 金山区| 惠来县| 称多县| 监利县| 桓仁| 小金县| 政和县| 安西县| 利津县| 银川市| 丹棱县| 邹城市| 辉南县| 龙南县| 临沭县| 辉县市| 平南县| 达日县| 宜昌市| 文水县| 菏泽市| 安西县| 马边| 都兰县| 阿瓦提县| 瑞安市| 宜春市| 清水县| 邢台县| 竹山县| 汾西县| 建始县| 琼海市| 张掖市| 奎屯市| 建平县| 缙云县| 宁城县| 陆河县| 仁怀市|