📄 smiletext.as
字号:
var tmp_str = ''; while( true ) { this.appendMessage(this.test_txt, tmp_str, 0, true); if(this.test_txt.textWidth > (this.min_width - 40) || tmp_str == word) { msg_obj.sequence.label.push(this.WORD); msg_obj.sequence.data.push(tmp_str); if(tmp_str != word) { word = word.substr(tmp_str.length); tmp_str = ''; } else break; } tmp_str = word.substr(0, tmp_str.length + 1); } word = ''; } } } } }}//---_global.SmileText.prototype.addMessageToField = function(){ var msg_obj = this.messages[this.messages.length-1]; if(msg_obj == undefined) return; var s_index = 0; var add_txt = ''; for(var i = 0; i < msg_obj.smiles.length; i++) { add_txt = msg_obj.msg.substring( s_index, msg_obj.smiles[i].ind ); this.getWords(msg_obj, add_txt); var smi = msg_obj.smiles[i]["smi"]; add_txt = this._SMI[smi]["spaces"]; msg_obj.sequence.label.push(this.SMILE); msg_obj.sequence.data.push(add_txt); s_index = msg_obj.smiles[i].ind + smi.length; this.iconContainer.attachMovie( this._SMI[smi]["link"], "ico"+this.smile_counter, this.smile_counter++, {_visible : false} ); msg_obj.smiles[i]["ico"] = this.iconContainer["ico"+(this.smile_counter)]; msg_obj.smiles[i]["ico"]["link"] = this._SMI[smi]["link"]; msg_obj.smiles[i]["ico"]["msgId"] = this.messages.length-1; msg_obj.smiles[i]["ico"]["icoId"] = i; } add_txt = msg_obj.msg.substr( s_index ); this.getWords(msg_obj, add_txt); var msg = this.breakMessage(msg_obj.sequence); this.appendMessage(this.smile_txt, msg, msg_obj.color, false); this.AlignSmilies(); }_global.SmileText.prototype.AlignSmilies = function(){ if(!this.showSmilies) return; this.onEnterFrame = function(){ updateAfterEvent(); } var len = this.messages.length; var dY = 0; for(var i = 0; i < len; i++) { var msg_obj = this.messages[i]; var curr_smi = 0, lines = 0; var msg = '', otag = '', ctag = ''; for(var j = 0; j < msg_obj.sequence.label.length; j++) { var stype = msg_obj.sequence.label[j]; var sdata = msg_obj.sequence.data[j]; if(stype == this.WORD) { msg += sdata; } else if(stype == this.TAG) { if(sdata.length < 5) { if(sdata.toUpperCase() == '<B>' || sdata.toUpperCase() == '<I>') { otag += sdata; ctag += sdata.charAt(0) + '/' + sdata.substr(1); } else if(sdata.toUpperCase() == '</B>' || sdata.toUpperCase() == '</I>') { otag = ctag = ''; } msg += sdata; } } else if(stype == this.BREAK || stype == this.TMP_BREAK) { lines++; msg = otag; } else if(stype == this.SMILE && (this.isRefresh == true || i == (len - 1))) { this.appendMessage(this.test_txt, msg + ctag, 0, true, true); var l_width = this.test_txt.textWidth; var x_y = new Object(); x_y.x = l_width + 2; x_y.y = lines * this.textFieldHeight + 3; var smi = msg_obj.smiles[curr_smi++]; var ico = this.smile2font(smi["ico"], x_y, dY, smi["smi"]); //this.showSmile(ico); msg_obj.sequence.data[j] = this._SMI[smi["smi"]]["spaces"]; msg += msg_obj.sequence.data[j]; } updateAfterEvent(); } dY += lines * this.textFieldHeight; } this.setMaxScroll(); this.smile_txt.onScroller(this.smile_txt); this.onEnterFrame = this.updateScroll; this.isRefresh = false;}_global.SmileText.prototype.showSmile = function(inIco){ var lines = this.smile_txt.bottomScroll - this.smile_txt.scroll; inIco._visible = ( (Math.floor(inIco._y/this.textFieldHeight) <= lines && inIco._y > 0 && (inIco._x + inIco.width) < this.width) || lines < 2 );}_global.SmileText.prototype.getLinesCount = function(_txt){ this.updateAfterEvent(); return (_txt.bottomScroll - _txt.scroll + _txt.maxscroll); }//---_global.SmileText.prototype.replaceHTMLSpecChars = function(msg){ msg = this.str_replace(msg,"\n","<br>"); msg = this.str_replace(msg,"\r","<br>"); msg = this.str_replace(msg,"<","<"); msg = this.str_replace(msg,">",">"); msg = this.str_replace(msg,"&","&"); msg = this.str_replace(msg,"'","'"); msg = msg.split("a> ").join("a> "); return (msg);}_global.SmileText.prototype.appendMessage = function(_txt, msg, _color, _clear, _nbsp){ if(msg == undefined) return; if(_nbsp == true) msg = this.str_replace(msg," "," "); var _str = '<FONT FACE="' + this.tf_font + '" SIZE="' + this.tf_size + '" COLOR="#'; _str += Number(_color).toString(16) + '">'; _str += msg + '</FONT>'; if(_clear == true) _txt.htmlText = ""; _txt.htmlText += _str; }//---//if smile found return array else undefined_global.SmileText.prototype.getSmilesInText = function( inTxt, inAvatar ){ var ret_arr = new Array(); var txt = inTxt; var avatar = inAvatar; if(inAvatar != null && inAvatar != '') { var startIndex = 0; var ind = 0; while( (ind = txt.indexOf(inAvatar,startIndex)) >= 0) { startIndex = ind + inAvatar.length; var smi_obj = new Object(); smi_obj.ind = ind; smi_obj.smi = inAvatar; ret_arr.push(smi_obj); } //replace smile text if(startIndex != 0) { var repl = ''; for(var i = 0; i < inAvatar.length; i++) repl+= '#'; txt = this.str_replace(txt, inAvatar, repl); } } for(var smi in this._SMI) { if(smi == undefined) continue; var startIndex = 0; var ind = 0; while( (ind = txt.indexOf(smi,startIndex)) >= 0) { startIndex = ind + smi.length; //fix bug with 'mailto:p' if(txt.substr(ind-6, 7) == 'mailto:') continue; var smi_obj = new Object(); smi_obj.ind = ind; smi_obj.smi = smi; ret_arr.push(smi_obj); } //replace smile text if(startIndex != 0) { var repl = ''; for(var i = 0; i < smi.length; i++) repl+= '#'; txt = this.str_replace(txt, smi, repl); } } ret_arr.sort( this.sortSmilesInMessage ); return ret_arr;}_global.SmileText.prototype.setMinWidth = function(w) { this.min_width = (w == undefined && w < 40)? this.min_width : w;}_global.SmileText.prototype.showSmiliesOnOff = function( flag ) { //for(var i = 0; i < this.messages.length; i++) this.iconContainer["ico"+i]._visible = false; for(var i = 0; i < this.messages.length; i++) { var msg_obj = this.messages[i]; for(var j = 0; j < msg_obj.smiles.length; j++) msg_obj.smiles[j]["ico"]._visible = flag; }};_global.SmileText.prototype.setSize = function(w, h) { if ((this.width == w) && (this.height == h) || w==undefined || h==undefined) { return; } var fl = (this.width > w) || (this.height > h); if( fl ) this.showSmiliesOnOff(!fl); this.width = w; this.height = h; this.smile_txt._width = w - (this.scrollBar._visible ? this.scrollBar._width : 0); this.test_txt._width = this.smile_txt._width; this.smile_txt._height = h; this.scrollBar._x = this.smile_txt._width; this.scrollBar.setSize(h); this.smiletext_background._width = w; this.smiletext_background._height = h; this.mask._width = w + 2; this.mask._height = h + 2; this.drawBorder(); this.refreshText(); if( fl ) this.showSmiliesOnOff(fl);};_global.SmileText.prototype.refreshText = function(){ if(!this.showSmilies) { this.onEnterFrame = this.updateScroll; return; } //refresh text this.smile_txt.htmlText = ""; for(var i = 0; i < this.messages.length; i++) { var msg_obj = this.messages[i]; //remove tmp_break var len = msg_obj.sequence.br_index.length; for(var j = 0; j < len; j++) { var ind = msg_obj.sequence.br_index.pop(); msg_obj.sequence.label.splice(ind, 1); msg_obj.sequence.data.splice(ind, 1); } var msg = this.breakMessage(msg_obj.sequence); this.appendMessage(this.smile_txt, msg, msg_obj.color, false); } this.isRefresh = true; this.onEnterFrame = this.AlignSmilies;}_global.SmileText.prototype.updateScroll = function(){ delete this.onEnterFrame; this.scrollBar.setScrollTarget(this.smile_txt);}_global.SmileText.prototype.clear = function() { this.smile_txt.htmlText = ""; this.resetTextLines(); this.messages = new Array(); for(var i = 1; i <= this.smile_counter; i++) { var ico = this.iconContainer["ico"+i]; if(ico.dummi) delete(this.iconContainer["ico"+i]); else ico.removeMovieClip(); } this.createEmptyMovieClip(this.iconContainer._name, this.iconContainer.getDepth());};//sets maximum number of messages in smile text._global.SmileText.prototype.setMaxMessageCount = function(inMaxMessageCount) { this.maxMessageCount = inMaxMessageCount;};_global.SmileText.prototype.setEnabled = function(inEnabled) { this.smile_txt.selectable = inEnabled; this.scrollBar.setEnabled(inEnabled);};_global.SmileText.prototype.setBackgroundColor = function(inBackgroundColor, inAlpha) { this.backgroundColor = inBackgroundColor; var c = new Color(this.smiletext_background); c.setRGB(this.backgroundColor); this.smiletext_background._alpha = inAlpha;};_global.SmileText.prototype.setBorderColor = function(inBorderColor, inAlpha) { this.borderColor = inBorderColor; this.drawBorder();};//PRIVATE METHODS._global.SmileText.prototype.setupTextFormat = function(font_name, font_size){ if(font_name == this.tf_font && font_size == this.tf_size) return; if(font_name == undefined)font_name = this.tf_font; if(font_size == undefined)font_size = this.tf_size; this.tf_font = font_name; this.tf_size = font_size; this.test_txt.multiline = true; this.appendMessage(this.test_txt, " <br> <br> ", 0, true); this.textFieldHeight = this.test_txt.textHeight / 3 ; this.spaceWidth = this.test_txt.textWidth; this.test_txt.multiline = false; for(var i=0; i<SmileTextConst.patternList.length; i++) { var smile_name = SmileTextConst.patternList[i][0]; var dummyObj = {_xscale:100, _yscale:100}; this.smileSetSize(dummyObj, smile_name); var need_spaces = Math.ceil( this._SMI[smile_name]["space_width"] / this.spaceWidth ); var spaces = ""; for(var j=0; j<need_spaces; j++) spaces += " "; this._SMI[smile_name]["spaces"] = spaces; this.appendMessage(this.test_txt, this.str_replace(spaces, " ", " "), 0, true); this._SMI[smile_name]["spaces_width"] = this.test_txt.textWidth; } };_global.SmileText.prototype.getLinesCount = function(_txt){ this.updateAfterEvent(); return (_txt.bottomScroll - _txt.scroll + _txt.maxscroll); };_global.SmileText.prototype.getPropWidth = function() { return this.width;};_global.SmileText.prototype.setPropWidth = function(inWidth) { return this.setSize(inWidth, this.height);};_global.SmileText.prototype.getPropHeight = function() { return this.height;};_global.SmileText.prototype.setPropHeight = function(inHeight) { return this.setSize(inHeight, this.height);};_global.SmileText.prototype.resetTextLines = function() { this.currentY = 0; this.messageCount = 0; this.smile_txt.text = ''; this.smile_txt.scroll = 1;};_global.SmileText.prototype.drawBorder = function() { this.border.clear(); this.border.lineStyle(1, this.borderColor, 100); this.border.moveTo(0, 0); this.border.lineTo(this.width, 0); this.border.lineTo(this.width, this.height); this.border.lineTo(0, this.height); this.border.lineTo(0, 0);};_global.SmileText.prototype.str_replace = function(str, _old, _new){ if(_new.indexOf(_old) >= 0) return str; var str1,str2; var pos = str.indexOf(_old); while (pos >= 0 ){ str1 = str.substring(0, pos); str2 = str.substring(pos+_old.length); str = str1 + _new + str2; pos = str.indexOf(_old); }; return str;}; _global.SmileText.prototype.sortSmilesInMessage = function (a, b) { if (a.ind < b.ind) { return -1;} else if (a.ind > b.ind) {return 1;} else {return 0;}};_global.SmileText.prototype.changeAvatar = function (inUserId){ /* var msgs = new Array(); for(var i = 0; i < this.messages.length; i++) { var msg_obj = this.messages[i]; msgs[i] = new Object(); msgs[i].label = msg_obj.label; msgs[i].msg = msg_obj.msg; msgs[i].text = msg_obj.text; msgs[i].userId = msg_obj.userId; msgs[i].color = msg_obj.color; } this.clear(); for(i = 0; i < msgs.length; i++) { this.addText(msgs[i].label, msgs[i].text, msgs[i].color, msgs[i].userId); } */}; Object.registerClass('SmileText', _global.SmileText);#endinitclip
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -