linkイベント発生はCLICKより速いからそこでもみ消すの巻
/**
* Copyright kawakita ( http://wonderfl.net/user/kawakita )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/p59v
*/
// forked from nariyu's イベント止めたいけど止められないす
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TextEvent;
import flash.text.TextField;
import flash.text.TextFormat;
[SWF(width = "465", height = "465", backgroundColor = 0xFFFFFF)]
public class LinkTest extends Sprite
{
private var sprite:Sprite;
private var textField:TextField;
private var output:TextField;
public function LinkTest()
{
super();
// Sprite (コンテナ)
sprite = new Sprite;
sprite.addEventListener(MouseEvent.CLICK, sprite_clickHandler);
sprite.graphics.beginFill(0xEEEEEE);
sprite.graphics.drawRoundRect(0, 0, 445, 100, 10);
sprite.graphics.endFill();
sprite.x = 10;
sprite.y = 10;
addChild(sprite);
// Sprite に addChild() するテキストフィールド
var textFormat:TextFormat = new TextFormat;
textFormat.font = "Verdana";
textField = new TextField;
textField.x = 10;
textField.y = 10;
textField.width = 425;
textField.height = 80;
textField.wordWrap = true;
textField.multiline = true;
textField.defaultTextFormat = textFormat;
textField.htmlText =
'ほげほげ <a href="event:A"><font color="#003399">リンクAだよ</font></a> ほげほげ ' + "\n" +
'ほげほげ <a href="event:B"><font color="#003399">リンクBだよ</font></a> ほげほげ ' + "\n" +
'ほげほげ <a href="event:C"><font color="#003399">リンクCだよ</font></a> ほげほげ ';
textField.addEventListener(TextEvent.LINK, textField_linkHandler);
sprite.addChild(textField);
// デバッグ出力用
output = new TextField;
output.x = 10;
output.y = 120;
output.width = 445;
output.height = 335;
output.wordWrap = true;
output.multiline = true;
output.border = true;
output.defaultTextFormat = textFormat;
output.text = "説明)上のように TextField を内包した Sprite (グレー背景)があります。\n" +
"「TextField 中のアンカー」以外の場所をクリックした場合は CLICK イベントを処理するけど、アンカーをクリックした場合は " +
"CLICK イベントを処理したくない。\n" +
"どうしたらいいんでしょう?\n-----\n";
addChild(output);
}
private function sprite_clickHandler(event:MouseEvent):void
{
output.appendText(event.type + "イベント: Sprite をクリックしたよ\n");
}
private function textField_linkHandler(event:TextEvent):void
{
// このイベントが発生した場合だけ
// event.stopImmediatePropagation(); とか
// event.stopPropagation(); で
// sprite の CLICK イベントを止めたいけど止められない...
output.appendText(event.type + "イベント: リンク" + event.text + "をクリックしたよ\n");
textField.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void{
e.stopImmediatePropagation();
textField.removeEventListener( MouseEvent.CLICK, arguments.callee )
});
}
}
}