|
- -- 重新实现TextField
- cc.TextField = class("TextField")
- cc.TextField.ClassName = "TextField"
-
- function cc.TextField:extend(node)
- cc.Text:extend(node);
- -- 把lua的类函数扩展给node(C++对象)
- node:extendClass(cc.TextField);
- node:setName("TextField")
-
- node.MaxLengthEnabled = false;
- node.MaxLength = 10;
-
- node.PasswordEnabled = false;
- node.PasswordStyleText = "*";
-
- node.TouchAreaEnabled = false;
- node.TouchArea = cc.rect(0,0,200,50);
-
- node.PlaceHolder = "";
- node.Text = "";
-
- node.Listener = nil;
-
- local function onTouchBegan(touch , event)
- if node.TouchAreaEnabled then
- local nsp = node:convertToNodeSpace2D(touch:getLocation());
- return cc.rectContainsPoint(node.TouchArea , nsp);
- else
- return node:hitTest(touch:getLocation());
- end
- end
-
- local function onTouchMoved(touch , event)
-
- end
-
- local function onTouchEnded(touch , event)
- node:onInput();
- end
-
- local function onTouchCancelled(touch , event)
-
- end
- -- 侦听点击通知
- node:registerTouch(onTouchBegan , onTouchMoved , onTouchEnded , onTouchCancelled);
- end
-
- function cc.TextField:addEventListener(listener)
- self.Listener = listener;
- end
-
- -- 弹出输入框
- function cc.TextField:onInput()
- local function onInputEnd(text)
- if not tolua.isnull(self) then
- self:setText(text);
- if self.Listener then
- self.Listener(self , cc.TextFiledEventType.enter);
- end
- end
- end
- if self.MaxLengthEnabled then
- --deviceInputBox("" , self.Text , self.MaxLength , onInputEnd);
- deviceInputBox("" , self.Text , 999999 , onInputEnd);
- else
- deviceInputBox("" , self.Text , 999999 , onInputEnd);
- end
- end
-
- function cc.TextField:create()
- local layer = cc.Text:create();
- self:extend(layer);
- return layer;
- end
-
- function cc.TextField:setFontConfig(ttfConfig)
- self.OriginTexColor = ttfConfig.texColor;
- cc.Text.setFontConfig(self , ttfConfig);
- end
-
- function cc.TextField:setText(text)
- self.Text = text;
- local fontConfig = self:getFontConfig();
-
- if text == "" then
- self.OriginTexColor = fontConfig.texColor;
- fontConfig.texColor = cc.c4b(149, 149, 149, 255);
- self:setString(self.PlaceHolder);
- else
- if self.OriginTexColor then
- fontConfig.texColor = self.OriginTexColor;
- end
- if self.PasswordEnabled then
- local text16 = Utf16:create(text);
- local size = text16:len();
- text = string.rep(self.PasswordStyleText , size);
- end
- self:setString(text);
- end
-
- self:setFontConfig(fontConfig);
- end
-
- function cc.TextField:getText()
- return self.Text;
- end
-
- function cc.TextField:getString()
- return self.Text;
- end
-
- function cc.TextField:setTouchArea(size)
- self.TouchArea = size;
- end
- function cc.TextField:getTouchArea()
- return self.TouchArea
- end
- function cc.TextField:setTouchAreaEnabled(enable)
- self.TouchAreaEnabled = enable;
- end
- function cc.TextField:isTouchAreaEnabled()
- return self.TouchAreaEnabled
- end
-
- function cc.TextField:setPlaceHolder(value)
- self.PlaceHolder = value;
- end
- function cc.TextField:getPlaceHolder()
- return self.PlaceHolder
- end
-
- function cc.TextField:setMaxLengthEnabled(enable)
- self.MaxLengthEnabled = enable;
- end
- function cc.TextField:isMaxLengthEnabled()
- return self.MaxLengthEnabled
- end
- function cc.TextField:setMaxLength(length)
- self.MaxLength = length;
- end
- function cc.TextField:getMaxLength()
- return self.MaxLength
- end
-
- function cc.TextField:setPasswordEnabled(enable)
- self.PasswordEnabled = enable;
- end
- function cc.TextField:isPasswordEnabled()
- return self.PasswordEnabled
- end
- function cc.TextField:setPasswordStyleText(styleText)
- self.PasswordStyleText = styleText;
- end
- function cc.TextField:getPasswordStyleText()
- return self.PasswordStyleText
- end
|