/**
* 输入框锚点为(0,0.5)
* @param textField
* @param callback
*/
function attachCursor(textField,callback ) {
if(textField && textField instanceof ccui.TextField && !textField"refreshCursor"]){
var size = textField.getContentSize();
var cursor = new cc.DrawNode();
cursor.drawSegment(cc.p(0,0),cc.p(0,-size.height*0.8),1,cc.color(0,0,0));
cursor.setAnchorPoint(0,1);
cursor.setVisible(false);
textField.addChild(cursor);
cursor.setPosition(0,size.height);
var delBtn = new ccui.ImageView(res.close_default_png);
textField.addChild(delBtn);
delBtn.setPosition(size.width+delBtn.width/2 ,size.height*0.6);
delBtn.setVisible(false);
delBtn.setTouchEnabled(true);
delBtn.addTouchEventListener(function (sender,type) {
if(type === ccui.Widget.TOUCH_ENDED){
textField.setString("");
textField.attachWithIME();
textField.refreshCursor(ccui.TextField.EVENT_DELETE_BACKWARD);
}
});
var isActed = false; //判断是否是第一次
textField.refreshCursor = function (type) {
if(!isActed){
isActed = true;
this._beyondText = "";
cursor.runAction(cc.repeatForever(
cc.sequence(
cc.delayTime(0.5)
,cc.show()
,cc.delayTime(0.5)
,cc.hide()
)
));
}
if(type === ccui.TextField.EVENT_DETACH_WITH_IME){
cursor.setVisible(false);
cursor.pause();
delBtn.setVisible(false);
}
else{
cursor.setVisible(true);
cursor.resume();
delBtn.setVisible(true);
if(type === ccui.TextField.EVENT_INSERT_TEXT){ //添加
while(true){
if(this.getAutoRenderSize().width<=this.width){
break;
}
var textStr = this.getString();
this._beyondText+=textStr;
this.setString(textStr.substring(1,textStr.length));
}
}else if(type === ccui.TextField.EVENT_DELETE_BACKWARD){
while(true){
if(this._beyondText.length==0){
break;
}
var tfStr = this.getString();
var tf = this._beyondText.substring(this._beyondText.length-1,this._beyondText.length)+tfStr;
this.setString(tf);
if(this.getAutoRenderSize().width>this.width){
this.setString(tfStr);
break;
}
this._beyondText=this._beyondText.substring(0,this._beyondText.length-1)
}
}
var len = 0;
if(this.getString().length == 0){
len = 0;
}else{
len = this.getAutoRenderSize().width; //the getAutoRenderSize function is string width of show
}
cursor.setPositionX(len);
}
}
textField.addEventListener(function(sender,type){
sender.refreshCursor(type);
callback && callback(sender,type);
},textField);
}
}
```
在别人的基础上改的,没怎么用过,有BUG大家提下
添加了 光标 关闭按钮 输入文本超出的范围 功能