AS3 Starling 下實現 文字的超連結功能

2021-06-18 13:48:33 字數 1418 閱讀 5955

相信使用starling開發的,在使用textfield時,會遇到,超連結檔案功能不可用的問題;

看一下原始碼;就知道,畢竟他是在原生的textfield基礎上實現的,將textfield draw成texture然後放到gpu顯示;

如果要實現鏈結功能;

那麼有個思路:

3)、使用原生的textfield,計算,第1)點中的,所有顯示內容的字元;並計算該所有字元的有效矩形區域;(在touch或是mouse互動時,作座標與矩形區域判斷);

生成型別這樣的資料結構,作為觸發link事件資料物件;

這樣在加上,touch事件,判斷touch的end階段事件,的x,y位置是否與上面的:rects有交集,有則觸發事件,並將:linktxt資料傳過事件物件中即可;

下面給出乙個github國外人寫好的乙個(關鍵要看,回貼內容)

textfields with hyperlinks

其中有個回貼有提供實現的另一種方式

自己寫了個測試程式:

以下實現方式,我沒寫使用矩形與互動點的碰撞檢測方式;

也是使用了,國外**的寫方,直接使用乙個可互動的物件:sprite

如果要使用矩形方式,那些就得對所有的rect都遍歷並碰撞檢測試;

如果要優化,還可以使用,四叉樹,對矩形的合理分布區域,再做高交的選擇性檢測;

主要**:

package

private function refreshlinkhotarea():void

; var sidx:int = result.index - hrefsindx;

var eidx:int = sidx + value.length;

var rect:rectangle;

for (var i:int = sidx; i < eidx; i++)

hrefsindx += tag.length - value.length;

}}

public static function tokey(rect:rectangle):string

}}import flash.display.sprite;

import flash.events.mouseevent;

import flash.geom.rectangle;

class linkhotarea extends sprite

private function onclick(e:mouseevent):void

trace("linkhotarea trigger : rectkey = " + rectkey + ", " + datastr );

}}

執行效果圖:

PHP window 伺服器下實現 自動解壓檔案

這幾天做乙個需求 上傳大檔案的壓縮zip格式到伺服器,要實現自動解壓到當前上傳目錄。之前是linux伺服器,可windows查了資料有個expand命令,可根本不能用啊!搗鼓了一上午,發現可以用 7z.exe 的自帶 命令列程式來完成。塊 system 7z.exe x y aos od pano ...

SQLite3中文編碼 Python的實現

讀取十萬多條文字寫入swww.cppcns.comqlite型別資料庫,由於文字中存在中文字元,插入到資料庫沒錯,取出時一直是unicodedecodeerror,導致折騰了一天。最後的解決方法 python連線資料時進行如下設定 db sqlite3.connection db.text fact...

Linux下利用rsync實現多伺服器檔案同步

windows做為檔案伺服器,使用rsync的windows服務版本,然後配置好就可以了。需要的朋友可以參考下。目標 多伺服器檔案同步 環境 2臺centos5.6 web端 192.168.20.20 backup端 192.168.20.21 需要備份目錄為 192.168.20.20 usr ...