现在很多软件都支持了编辑界面的文本拖拽和点击编辑来直接修改数值, 这样便于操作, 而且体验性也好, 抛砖引玉吧
于是就用好久没编写的as3来写了一下:
因为用的flash ide写的没有提示, 就暂时不做细节处理了, 如果用于工程上会有点小问题, 不过不影响本效果展示
代码:
import flash.text.TextField;
import flash.events.*
var txtDragValue:TextField;
txtDragValue.selectable = false;
var isDown:Boolean = false;
var oldTxtValue:int = 0;
var posXOld:int = 0;
var isMoved:Boolean = false;
function evt_down(e:Event){
isDown = true;
isMoved = false;
oldTxtValue = int(txtDragValue.text);
posXOld = mouseX;
}
function evt_move(e:Event){
if(!isDown || txtDragValue.selectable)return;
var tmpX:int = int(mouseX)
if(posXOld!=tmpX){
isMoved = true;
oldTxtValue+= (tmpX-posXOld)*1;
posXOld = tmpX;
txtDragValue.text = oldTxtValue.toString();
trace(oldTxtValue.toString());
}
}
function evt_up(e:Event){
isDown = false;
if(!isMoved){
txtDragValue.selectable = true;
txtDragValue.type = "input";
stage.focus=txtDragValue
}
}
function evt_dea(e:Event){
if(!isMoved && txtDragValue.selectable){
txtDragValue.selectable = false;
txtDragValue.type = "dynamic";
}
}
txtDragValue.addEventListener(MouseEvent.MOUSE_DOWN,evt_down);
txtDragValue.addEventListener(MouseEvent.MOUSE_MOVE,evt_move);
txtDragValue.addEventListener(MouseEvent.MOUSE_UP,evt_up);
txtDragValue.addEventListener(FocusEvent.FOCUS_OUT,evt_dea);
资源地址:
链接: http://pan.baidu.com/s/1gd3wsRx 密码: 668g
回顾使用这么多种语言和引擎, 感觉flash还有发展的空间, 只是adobe对它力不从心, 如果as4有的话, 希望来个c++版本(猜跨平台会很费劲)的内核, 速度会上来. 感觉flash还是太散了, 因为较早开发的软件, 用途也过于广泛, 导致它什么都能做, 什么也做不好, 什么都要自己去写或者去找, 不过还好, 其中有很多大牛的引擎比如tween-lite轻量化的运动模块和box2d-as3版, 都能很高效的支持as3这个平台
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zszeng/article/details/46704741