-
用AS做一个鼠标跟随的信息提示框
Posted on 三月 5th, 2009 5 comments如上例子所示,有很多实现的方法,以前我也在场景中画好一个黑色的背景然后在上面加文字来实现,现在自己想用纯AS来写。
流程是用AS写好一个类实现画背景图、文字、鼠标跟随、隐藏的方法,然后在其他地方写事件触发它。请看tips.as代码:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFormat;public class tips extends MovieClip {
private var tx:Number = 0;
private var ty:Number = 0;
private var myText:TextField = new TextField();
private var box:Sprite = new Sprite();
public function tips() {
//trace(”构造”);
init();
out();
}
//不显示
public function out():void {
this.visible = false;
}
//显示
public function show():void {
this.visible = true;
}
private function init():void {
//this.alpha = 0.8;
drawBox(200,50);
addChild(myText);
myText.x = 5;
myText.y = 5;
myText.wordWrap = true;
myText.textColor = 0xffffff;
addEventListener(Event.ENTER_FRAME , onFrameHand);
}
public function setWidth(w:int , h:int):void {
box.width = w;
box.height = h;
myText.width = w – 10;
myText.height = h – 10;
}
//画一个文字的底图
private function drawBox(vWidth:int = 100 , vHeight:int = 100) {
box.graphics.beginFill(0×000000,0.8);
box.graphics.lineStyle(1, 0xffffaa,0.8);
box.graphics.drawRect(0,0,vWidth,vHeight);
box.graphics.endFill();
this.addChildAt(box,0);
}
//写text的文字
public function setText(str:String):void {
myText.htmlText = str;
}
private function onFrameHand(e:Event):void {
tx = stage.mouseX+10;
ty = stage.mouseY+10;
//trace(mouseX);
if ((tx + this.width)>stage.stageWidth) {
tx = stage.mouseX – this.width – 10;
}
if ((ty + this.height)>400) {
ty = stage.mouseY – this.height – 10;
}
this. x = tx;
this. y = ty;
}
}
}然后新建一个clew_info.fla ,建立两个元件:hitObj和hitObj2,在帧上写代码:
import tips;
var box:tips = new tips();
addChild(box);hitObj.addEventListener(MouseEvent.MOUSE_OVER , onOverHand);
hitObj.addEventListener(MouseEvent.MOUSE_OUT , onOutHand);
function onOverHand(e:MouseEvent):void{
box.setText(”你好呀,我也是现在才进来<b>玩这个游</b>戏的<br/><br/>你喜欢吗?”);
box.setWidth(150,60);
box.show();
}
function onOutHand(e:MouseEvent):void{
box.out();
}hitObj2.addEventListener(MouseEvent.MOUSE_OVER , onOverHand2);
hitObj2.addEventListener(MouseEvent.MOUSE_OUT , onOutHand2);
function onOverHand2(e:MouseEvent):void{
box.setText(”第二个提示内容\n第二个提示内容消息”);
box.setWidth(100,60);
box.show();
}
function onOutHand2(e:MouseEvent):void{
box.out();
}就OK了。
box.setText(”"); box.setWidth(100,60); box.show(); box.out(); 都是tips这个类写好的方法。通过这样的方法,实现了逻辑与具体实现分开,传统OOP的做法。
下面是源文件:
提示框源文件5 responses to “用AS做一个鼠标跟随的信息提示框”
-
yoji 五月 14th, 2009于13:33
这个效果非常好,可是我还想在提示框上放上链接,然后可以点击,如何制作?
-
admin 五月 17th, 2009于17:56
那这就不是鼠标跟随了,可以做成一个不跟随的框,然后在上面加上htmlText就OK
-
yoji 五月 18th, 2009于09:59
@admin
恩,暂时不用了,我直接做在网页里了,多谢~ -
ransion 六月 17th, 2009于13:38
tip的高度宽度最好和输入文字长度有关 这样不用手动设置数值了
-
admin 七月 8th, 2009于23:27
@ransion
你说得很有道理,已经在制作的游戏中用到这样的tips了.
http://tt1.mh.7you.com/
这是我们公司制作的游戏.
Leave a reply
-


