(function(window,document,Laya){ var __un=Laya.un,__uns=Laya.uns,__static=Laya.static,__class=Laya.class,__getset=Laya.getset,__newvec=Laya.__newvec; var Browser=laya.utils.Browser,CSSStyle=laya.display.css.CSSStyle,ClassUtils=laya.utils.ClassUtils; var Event=laya.events.Event,HTMLChar=laya.utils.HTMLChar,Loader=laya.net.Loader,Node=laya.display.Node,Rectangle=laya.maths.Rectangle; var Render=laya.renders.Render,RenderContext=laya.renders.RenderContext,RenderSprite=laya.renders.RenderSprite; var Sprite=laya.display.Sprite,Stat=laya.utils.Stat,Text=laya.display.Text,Texture=laya.resource.Texture; var URL=laya.net.URL,Utils=laya.utils.Utils; /** *@private */ //class laya.html.utils.HTMLParse var HTMLParse=(function(){ function HTMLParse(){} __class(HTMLParse,'laya.html.utils.HTMLParse'); HTMLParse.parse=function(ower,xmlString,url){ xmlString=xmlString.replace(/
/g,"
"); xmlString=""+xmlString+""; xmlString=xmlString.replace(HTMLParse.spacePattern,HTMLParse.char255); var xml=Utils.parseXMLFromString(xmlString); HTMLParse._parseXML(ower,xml.childNodes[0].childNodes,url); } HTMLParse._parseXML=function(parent,xml,url,href){ var i=0,n=0; if (xml.join || xml.item){ for (i=0,n=xml.length;i < n;++i){ HTMLParse._parseXML(parent,xml[i],url,href); } }else { var node; var nodeName; if (xml.nodeType==3){ var txt; if ((parent instanceof laya.html.dom.HTMLDivElement )){ if (xml.nodeName==null){ xml.nodeName="#text"; } nodeName=xml.nodeName.toLowerCase(); txt=xml.textContent.replace(/^\s+|\s+$/g,''); if (txt.length > 0){ node=ClassUtils.getInstance(nodeName); if (node){ parent.addChild(node); ((node).innerTEXT=txt.replace(HTMLParse.char255AndOneSpacePattern," ")); } } }else { txt=xml.textContent.replace(/^\s+|\s+$/g,''); if (txt.length > 0){ ((parent).innerTEXT=txt.replace(HTMLParse.char255AndOneSpacePattern," ")); } } return; }else { nodeName=xml.nodeName.toLowerCase(); if (nodeName=="#comment")return; node=ClassUtils.getInstance(nodeName); if (node){ node=parent.addChild(node); (node).URI=url; (node).href=href; var attributes=xml.attributes; if (attributes && attributes.length > 0){ for (i=0,n=attributes.length;i < n;++i){ var attribute=attributes[i]; var attrName=attribute.nodeName; var value=attribute.value; node._setAttributes(attrName,value); } } HTMLParse._parseXML(node,xml.childNodes,url,(node).href); }else { HTMLParse._parseXML(parent,xml.childNodes,url,href); } } } } HTMLParse.char255=String.fromCharCode(255); HTMLParse.spacePattern=/ | /g; HTMLParse.char255AndOneSpacePattern=new RegExp(String.fromCharCode(255)+"|(\\s+)","g"); return HTMLParse; })() /** *@private *HTML的布局类 *对HTML的显示对象进行排版 */ //class laya.html.utils.Layout var Layout=(function(){ function Layout(){} __class(Layout,'laya.html.utils.Layout'); Layout.later=function(element){ if (Layout._will==null){ Layout._will=[]; Laya.stage.frameLoop(1,null,function(){ if (Layout._will.length < 1) return; for (var i=0;i < Layout._will.length;i++){ laya.html.utils.Layout.layout(Layout._will[i]); } Layout._will.length=0; }); } Layout._will.push(element); } Layout.layout=function(element){ if (!element || !element._style)return null; if ((element._style._type & /*laya.display.css.CSSStyle.ADDLAYOUTED*/0x200)===0) return null; element.getStyle()._type &=~ /*laya.display.css.CSSStyle.ADDLAYOUTED*/0x200; var arr=Layout._multiLineLayout(element); if (Render.isConchApp&&element["layaoutCallNative"]){ (element).layaoutCallNative(); } return arr; } Layout._multiLineLayout=function(element){ if (Text.RightToLeft)return Layout._multiLineLayout2(element); var elements=new Array; element._addChildsToLayout(elements); var i=0,n=elements.length,j=0; var style=element._getCSSStyle(); var letterSpacing=style.letterSpacing; var leading=style.leading; var lineHeight=style.lineHeight; var widthAuto=style._widthAuto()|| !style.wordWrap; var width=widthAuto ? 999999 :element.width; var height=element.height; var maxWidth=0; var exWidth=style.italic ? style.fontSize / 3 :0; var align=style._getAlign(); var valign=style._getValign(); var endAdjust=valign!==0 || align!==0 || lineHeight !=0; var oneLayout; var x=0; var y=0; var w=0; var h=0; var tBottom=0; var lines=new Array; var curStyle; var curPadding; var curLine=lines[0]=new LayoutLine(); var newLine=false,nextNewline=false; var htmlWord; var sprite; curLine.h=0; if (style.italic) width-=style.fontSize / 3; var tWordWidth=0; var tLineFirstKey=true; function addLine (){ curLine.y=y; y+=curLine.h+leading; if (curLine.h==0)y+=lineHeight; curLine.mWidth=tWordWidth; tWordWidth=0; curLine=new LayoutLine(); lines.push(curLine); curLine.h=0; x=0; tLineFirstKey=true; newLine=false; } for (i=0;i < n;i++){ oneLayout=elements[i]; if (oneLayout==null){ if (!tLineFirstKey){ x+=Layout.DIV_ELEMENT_PADDING; } curLine.wordStartIndex=curLine.elements.length; continue ; } tLineFirstKey=false; if ((oneLayout instanceof laya.html.dom.HTMLBrElement )){ addLine(); curLine.y=y; continue ; }else if (oneLayout._isChar()){ htmlWord=oneLayout; if (!htmlWord.isWord){ if (lines.length > 0 && (x+w)> width && curLine.wordStartIndex > 0){ var tLineWord=0; tLineWord=curLine.elements.length-curLine.wordStartIndex+1; curLine.elements.length=curLine.wordStartIndex; i-=tLineWord; addLine(); continue ; } newLine=false; tWordWidth+=htmlWord.width; }else { newLine=nextNewline || (htmlWord.char==='\n'); curLine.wordStartIndex=curLine.elements.length; } w=htmlWord.width+letterSpacing; h=htmlWord.height; nextNewline=false; newLine=newLine || ((x+w)> width); newLine && addLine(); curLine.minTextHeight=Math.min(curLine.minTextHeight,oneLayout.height); }else { curStyle=oneLayout._getCSSStyle(); sprite=oneLayout; curPadding=curStyle.padding; curStyle._getCssFloat()===0 || (endAdjust=true); newLine=nextNewline || curStyle.lineElement; w=sprite.width *sprite._style._tf.scaleX+curPadding[1]+curPadding[3]+letterSpacing; h=sprite.height *sprite._style._tf.scaleY+curPadding[0]+curPadding[2]; nextNewline=curStyle.lineElement; newLine=newLine || ((x+w)> width && curStyle.wordWrap); newLine && addLine(); } curLine.elements.push(oneLayout); curLine.h=Math.max(curLine.h,h); oneLayout.x=x; oneLayout.y=y; x+=w; curLine.w=x-letterSpacing; curLine.y=y; maxWidth=Math.max(x+exWidth,maxWidth); } y=curLine.y+curLine.h; if (endAdjust){ var tY=0; var tWidth=width; if (widthAuto && element.width > 0){ tWidth=element.width; } for (i=0,n=lines.length;i < n;i++){ lines[i].updatePos(0,tWidth,i,tY,align,valign,lineHeight); tY+=Math.max(lineHeight,lines[i].h+leading); } y=tY; } widthAuto && (element.width=maxWidth); (y > element.height)&& (element.height=y); return [maxWidth,y]; } Layout._multiLineLayout2=function(element){ var elements=new Array; element._addChildsToLayout(elements); var i=0,n=elements.length,j=0; var style=element._getCSSStyle(); var letterSpacing=style.letterSpacing; var leading=style.leading; var lineHeight=style.lineHeight; var widthAuto=style._widthAuto()|| !style.wordWrap; var width=widthAuto ? 999999 :element.width; var height=element.height; var maxWidth=0; var exWidth=style.italic ? style.fontSize / 3 :0; var align=2-style._getAlign(); var valign=style._getValign(); var endAdjust=valign!==0 || align!==0 || lineHeight !=0; var oneLayout; var x=0; var y=0; var w=0; var h=0; var tBottom=0; var lines=new Array; var curStyle; var curPadding; var curLine=lines[0]=new LayoutLine(); var newLine=false,nextNewline=false; var htmlWord; var sprite; curLine.h=0; if (style.italic) width-=style.fontSize / 3; var tWordWidth=0; var tLineFirstKey=true; function addLine (){ curLine.y=y; y+=curLine.h+leading; if (curLine.h==0)y+=lineHeight; curLine.mWidth=tWordWidth; tWordWidth=0; curLine=new LayoutLine(); lines.push(curLine); curLine.h=0; x=0; tLineFirstKey=true; newLine=false; } for (i=0;i < n;i++){ oneLayout=elements[i]; if (oneLayout==null){ if (!tLineFirstKey){ x+=Layout.DIV_ELEMENT_PADDING; } curLine.wordStartIndex=curLine.elements.length; continue ; } tLineFirstKey=false; if ((oneLayout instanceof laya.html.dom.HTMLBrElement )){ addLine(); curLine.y=y; continue ; }else if (oneLayout._isChar()){ htmlWord=oneLayout; if (!htmlWord.isWord){ if (lines.length > 0 && (x+w)> width && curLine.wordStartIndex > 0){ var tLineWord=0; tLineWord=curLine.elements.length-curLine.wordStartIndex+1; curLine.elements.length=curLine.wordStartIndex; i-=tLineWord; addLine(); continue ; } newLine=false; tWordWidth+=htmlWord.width; }else { newLine=nextNewline || (htmlWord.char==='\n'); curLine.wordStartIndex=curLine.elements.length; } w=htmlWord.width+letterSpacing; h=htmlWord.height; nextNewline=false; newLine=newLine || ((x+w)> width); newLine && addLine(); curLine.minTextHeight=Math.min(curLine.minTextHeight,oneLayout.height); }else { curStyle=oneLayout._getCSSStyle(); sprite=oneLayout; curPadding=curStyle.padding; curStyle._getCssFloat()===0 || (endAdjust=true); newLine=nextNewline || curStyle.lineElement; w=sprite.width *sprite._style._tf.scaleX+curPadding[1]+curPadding[3]+letterSpacing; h=sprite.height *sprite._style._tf.scaleY+curPadding[0]+curPadding[2]; nextNewline=curStyle.lineElement; newLine=newLine || ((x+w)> width && curStyle.wordWrap); newLine && addLine(); } curLine.elements.push(oneLayout); curLine.h=Math.max(curLine.h,h); oneLayout.x=x; oneLayout.y=y; x+=w; curLine.w=x-letterSpacing; curLine.y=y; maxWidth=Math.max(x+exWidth,maxWidth); } y=curLine.y+curLine.h; if (endAdjust){ var tY=0; var tWidth=width; for (i=0,n=lines.length;i < n;i++){ lines[i].updatePos(0,tWidth,i,tY,align,valign,lineHeight); tY+=Math.max(lineHeight,lines[i].h+leading); } y=tY; } widthAuto && (element.width=maxWidth); (y > element.height)&& (element.height=y); for (i=0,n=lines.length;i < n;i++){ lines[i].revertOrder(width); } return [maxWidth,y]; } Layout._will=null; Layout.DIV_ELEMENT_PADDING=0; return Layout; })() /** *@private */ //class laya.html.utils.LayoutLine var LayoutLine=(function(){ function LayoutLine(){ this.x=0; this.y=0; this.w=0; this.h=0; this.wordStartIndex=0; this.minTextHeight=99999; this.mWidth=0; this.elements=new Array; } __class(LayoutLine,'laya.html.utils.LayoutLine'); var __proto=LayoutLine.prototype; /** *底对齐(默认) *@param left *@param width *@param dy *@param align 水平 *@param valign 垂直 *@param lineHeight 行高 */ __proto.updatePos=function(left,width,lineNum,dy,align,valign,lineHeight){ var w=0; var one if (this.elements.length > 0){ one=this.elements[this.elements.length-1]; w=one.x+one.width-this.elements[0].x; }; var dx=0,ddy=NaN; align===/*laya.display.css.CSSStyle.ALIGN_CENTER*/1 && (dx=(width-w)/ 2); align===/*laya.display.css.CSSStyle.ALIGN_RIGHT*/2 && (dx=(width-w)); lineHeight===0 || valign !=0 || (valign=1); for (var i=0,n=this.elements.length;i < n;i++){ one=this.elements[i]; var tCSSStyle=one._getCSSStyle(); dx!==0 && (one.x+=dx); switch (tCSSStyle._getValign()){ case 0: one.y=dy; break ; case /*laya.display.css.CSSStyle.VALIGN_MIDDLE*/1:; var tMinTextHeight=0; if (this.minTextHeight !=99999){ tMinTextHeight=this.minTextHeight; }; var tBottomLineY=(tMinTextHeight+lineHeight)/ 2; tBottomLineY=Math.max(tBottomLineY,this.h); if ((one instanceof laya.html.dom.HTMLImageElement )){ ddy=dy+tBottomLineY-one.height; }else { ddy=dy+tBottomLineY-one.height; } one.y=ddy; break ; case /*laya.display.css.CSSStyle.VALIGN_BOTTOM*/2: one.y=dy+(lineHeight-one.height); break ; } } } /** *布局反向,目前用于将ltr模式布局转为rtl模式布局 */ __proto.revertOrder=function(width){ var one if (this.elements.length > 0){ var i=0,len=0; len=this.elements.length; for (i=0;i < len;i++){ one=this.elements[i]; one.x=width-one.x-one.width; } } } return LayoutLine; })() /** *@private */ //class laya.html.dom.HTMLElement extends laya.display.Sprite var HTMLElement=(function(_super){ function HTMLElement(){ this.URI=null; this._href=null; HTMLElement.__super.call(this); this._text=HTMLElement._EMPTYTEXT; this.setStyle(new CSSStyle(this)); this._getCSSStyle().valign="middle"; this.mouseEnabled=true; } __class(HTMLElement,'laya.html.dom.HTMLElement',_super); var __proto=HTMLElement.prototype; /** *@private */ __proto.layaoutCallNative=function(){ var n=0; if (this._childs &&(n=this._childs.length)> 0){ for (var i=0;i < n;i++){ this._childs[i].layaoutCallNative && this._childs[i].layaoutCallNative(); } }; var word=this._getWords(); word ? laya.html.dom.HTMLElement.fillWords(this,word,0,0,this.style.font,this.style.color,this.style.underLine,this.style.stroke,this.style.strokeColor):this.graphics.clear(); } __proto.appendChild=function(c){ return this.addChild(c); } /** *rtl模式的getWords函數 */ __proto._getWords2=function(){ var txt=this._text.text; if (!txt || txt.length===0) return null; var i=0,n=0; var realWords; var drawWords; if (!this._text.drawWords){ realWords=txt.split(" "); n=realWords.length-1; drawWords=[]; for (i=0;i < n;i++){ drawWords.push(realWords[i]," ") } if(n>=0) drawWords.push(realWords[n]); this._text.drawWords=drawWords; }else{ drawWords=this._text.drawWords; }; var words=this._text.words; if (words && words.length===drawWords.length) return words; words===null && (this._text.words=words=[]); words.length=drawWords.length; var size; var style=this.style; var fontStr=style.font; for (i=0,n=drawWords.length;i < n;i++){ size=Utils.measureText(drawWords[i],fontStr); var tHTMLChar=words[i]=new HTMLChar(drawWords[i],size.width,size.height || style.fontSize,style); if (tHTMLChar.char.length > 1){ tHTMLChar.charNum=tHTMLChar.char; } if (this.href){ var tSprite=new Sprite(); this.addChild(tSprite); tHTMLChar.setSprite(tSprite); } } return words; } __proto._getWords=function(){ if (!Text.CharacterCache)return this._getWords2(); var txt=this._text.text; if (!txt || txt.length===0) return null; var words=this._text.words; if (words && words.length===txt.length) return words; words===null && (this._text.words=words=[]); words.length=txt.length; var size; var style=this.style; var fontStr=style.font; var startX=0; for (var i=0,n=txt.length;i < n;i++){ size=Utils.measureText(txt.charAt(i),fontStr); var tHTMLChar=words[i]=new HTMLChar(txt.charAt(i),size.width,size.height||style.fontSize,style); if (this.href){ var tSprite=new Sprite(); this.addChild(tSprite); tHTMLChar.setSprite(tSprite); } } return words; } __proto.showLinkSprite=function(){ var words=this._text.words; if (words){ var tLinkSpriteList=[]; var tSprite; var tHtmlChar; for (var i=0;i < words.length;i++){ tHtmlChar=words[i]; tSprite=new Sprite(); tSprite.graphics.drawRect(0,0,tHtmlChar.width,tHtmlChar.height,"#ff0000"); tSprite.width=tHtmlChar.width; tSprite.height=tHtmlChar.height; this.addChild(tSprite); tLinkSpriteList.push(tSprite); } } } __proto._layoutLater=function(){ var style=this.style; if ((style._type & /*laya.display.css.CSSStyle.ADDLAYOUTED*/0x200))return; if (style.widthed(this)&& (this._childs.length>0 || this._getWords()!=null)&& style.block){ Layout.later(this); style._type |=/*laya.display.css.CSSStyle.ADDLAYOUTED*/0x200; } else{ this.parent && (this.parent)._layoutLater(); } } __proto._setAttributes=function(name,value){ switch (name){ case 'style': this.style.cssText(value); return; case 'class': this.className=value; return; } _super.prototype._setAttributes.call(this,name,value); } __proto.updateHref=function(){ if (this._href !=null){ var words=this._getWords(); if (words){ var tHTMLChar; var tSprite; for (var i=0;i < words.length;i++){ tHTMLChar=words[i]; tSprite=tHTMLChar.getSprite(); if (tSprite){ tSprite.size(tHTMLChar.width,tHTMLChar.height); tSprite.on(/*laya.events.Event.CLICK*/"click",this,this.onLinkHandler); } } } } } __proto.onLinkHandler=function(e){ switch(e.type){ case /*laya.events.Event.CLICK*/"click":; var target=this; while (target){ target.event(/*laya.events.Event.LINK*/"link",[this.href]); target=target.parent; } break ; } } __proto.formatURL=function(url){ if (!this.URI)return url; return URL.formatURL(url,this.URI ? this.URI.path :null); } __getset(0,__proto,'href',function(){ return this._href; },function(url){ this._href=url; if (url !=null){ this._getCSSStyle().underLine=1; this.updateHref(); } }); __getset(0,__proto,'color',null,function(value){ this.style.color=value; }); __getset(0,__proto,'onClick',null,function(value){ var fn; Laya._runScript("fn=function(event){"+value+";}"); this.on(/*laya.events.Event.CLICK*/"click",this,fn); }); __getset(0,__proto,'id',null,function(value){ HTMLDocument.document.setElementById(value,this); }); __getset(0,__proto,'innerTEXT',function(){ return this._text.text; },function(value){ this.text=value; }); __getset(0,__proto,'style',function(){ return this._style; }); __getset(0,__proto,'text',function(){ return this._text.text; },function(value){ if (this._text==HTMLElement._EMPTYTEXT){ this._text={text:value,words:null}; } else{ this._text.text=value; this._text.words && (this._text.words.length=0); } Render.isConchApp && this.layaoutCallNative(); this._renderType |=/*laya.renders.RenderSprite.CHILDS*/0x800; this.repaint(); this.updateHref(); }); __getset(0,__proto,'parent',_super.prototype._$get_parent,function(value){ if ((value instanceof laya.html.dom.HTMLElement )){ var p=value; this.URI || (this.URI=p.URI); this.style.inherit(p.style); } Laya.superSet(Sprite,this,'parent',value); }); __getset(0,__proto,'className',null,function(value){ this.style.attrs(HTMLDocument.document.styleSheets['.'+value]); }); HTMLElement.fillWords=function(ele,words,x,y,font,color,underLine,stroke,strokeColor){ ele.graphics.clear(); for (var i=0,n=words.length;i < n;i++){ var a=words[i]; if (stroke > 0){ ele.graphics.fillBorderText(a.char,a.x+x,a.y+y,font,color,strokeColor,stroke,'left'); } else { ele.graphics.fillText(a.char,a.x+x,a.y+y,font,color,'left',underLine); } } } HTMLElement._EMPTYTEXT={text:null,words:null}; return HTMLElement; })(Sprite) /** *@private */ //class laya.html.dom.HTMLBrElement extends laya.html.dom.HTMLElement var HTMLBrElement=(function(_super){ function HTMLBrElement(){ HTMLBrElement.__super.call(this); this.style.lineElement=true; this.style.block=true; } __class(HTMLBrElement,'laya.html.dom.HTMLBrElement',_super); return HTMLBrElement; })(HTMLElement) /** *DIV标签 */ //class laya.html.dom.HTMLDivElement extends laya.html.dom.HTMLElement var HTMLDivElement=(function(_super){ function HTMLDivElement(){ /**实际内容的高 */ this.contextHeight=NaN; /**实际内容的宽 */ this.contextWidth=NaN; HTMLDivElement.__super.call(this); this.style.block=true; this.style.lineElement=true; this.style.width=200; this.style.height=200; HTMLStyleElement; } __class(HTMLDivElement,'laya.html.dom.HTMLDivElement',_super); var __proto=HTMLDivElement.prototype; /** *追加内容,解析并对显示对象排版 *@param text */ __proto.appendHTML=function(text){ HTMLParse.parse(this,text,this.URI); this.layout(); } /** *@private *@param out *@return */ __proto._addChildsToLayout=function(out){ var words=this._getWords(); if (words==null && this._childs.length==0)return false; words && words.forEach(function(o){ out.push(o); }); var tFirstKey=true; for (var i=0,len=this._childs.length;i < len;i++){ var o=this._childs[i]; if (tFirstKey){ tFirstKey=false; }else { out.push(null); } o._addToLayout(out) } return true; } /** *@private *@param out */ __proto._addToLayout=function(out){ this.layout(); } /** *@private *对显示内容进行排版 */ __proto.layout=function(){ if (!this.style)return; this.style._type |=/*laya.display.css.CSSStyle.ADDLAYOUTED*/0x200; var tArray=Layout.layout(this); if (tArray){ if (!this._$P.mHtmlBounds)this._set$P("mHtmlBounds",new Rectangle()); var tRectangle=this._$P.mHtmlBounds; tRectangle.x=tRectangle.y=0; tRectangle.width=this.contextWidth=tArray[0]; tRectangle.height=this.contextHeight=tArray[1]; this.setBounds(tRectangle); } } /** *获取对象的高 */ __getset(0,__proto,'height',function(){ if (this._height)return this._height; return this.contextHeight; },_super.prototype._$set_height); /** *设置标签内容 */ __getset(0,__proto,'innerHTML',null,function(text){ this.destroyChildren(); this.appendHTML(text); }); /** *获取对象的宽 */ __getset(0,__proto,'width',function(){ if (this._width)return this._width; return this.contextWidth; },function(value){ var changed=false; if (value===0){ changed=value !=this._width; }else{ changed=value !=this.width; } Laya.superSet(HTMLElement,this,'width',value); if(changed) this.layout(); }); return HTMLDivElement; })(HTMLElement) /** *@private */ //class laya.html.dom.HTMLDocument extends laya.html.dom.HTMLElement var HTMLDocument=(function(_super){ function HTMLDocument(){ this.all=new Array; this.styleSheets=CSSStyle.styleSheets; HTMLDocument.__super.call(this); } __class(HTMLDocument,'laya.html.dom.HTMLDocument',_super); var __proto=HTMLDocument.prototype; __proto.getElementById=function(id){ return this.all[id]; } __proto.setElementById=function(id,e){ this.all[id]=e; } __static(HTMLDocument, ['document',function(){return this.document=new HTMLDocument();} ]); return HTMLDocument; })(HTMLElement) /** *@private */ //class laya.html.dom.HTMLImageElement extends laya.html.dom.HTMLElement var HTMLImageElement=(function(_super){ function HTMLImageElement(){ this._tex=null; this._url=null; this._renderArgs=[]; HTMLImageElement.__super.call(this); this.style.block=true; } __class(HTMLImageElement,'laya.html.dom.HTMLImageElement',_super); var __proto=HTMLImageElement.prototype; __proto._addToLayout=function(out){ !this._style.absolute && out.push(this); } __proto.render=function(context,x,y){ if (!this._tex || !this._tex.loaded || !this._tex.loaded || this._width < 1 || this._height < 1)return; Stat.spriteCount++; this._renderArgs[0]=this._tex; this._renderArgs[1]=this.x; this._renderArgs[2]=this.y; this._renderArgs[3]=this.width || this._tex.width; this._renderArgs[4]=this.height || this._tex.height; context.ctx.drawTexture2(x,y,this.style.translateX,this.style.translateY,this.transform,this.style.alpha,this.style.blendMode,this._renderArgs); } /** *@private */ __proto.layaoutCallNative=function(){ var n=0; if (this._childs &&(n=this._childs.length)> 0){ for (var i=0;i < n;i++){ this._childs[i].layaoutCallNative && this._childs[i].layaoutCallNative(); } } } __getset(0,__proto,'src',null,function(url){ var _$this=this; url=this.formatURL(url); if (this._url==url)return; this._url=url; var tex=this._tex=Loader.getRes(url); if (!tex){ this._tex=tex=new Texture(); tex.load(url); Loader.cacheRes(url,tex); } function onloaded (){ if (!_$this._style)return; var style=_$this._style; var w=style.widthed(_$this)?-1:_$this._tex.width; var h=style.heighted(_$this)?-1:_$this._tex.height; if (!style.widthed(_$this)&& _$this._width !=_$this._tex.width){ _$this.width=_$this._tex.width; _$this.parent && (_$this.parent)._layoutLater(); } if (!style.heighted(_$this)&& _$this._height !=_$this._tex.height){ _$this.height=_$this._tex.height; _$this.parent && (_$this.parent)._layoutLater(); } if (Render.isConchApp){ _$this._renderArgs[0]=_$this._tex; _$this._renderArgs[1]=_$this.x; _$this._renderArgs[2]=_$this.y; _$this._renderArgs[3]=_$this.width || _$this._tex.width; _$this._renderArgs[4]=_$this.height || _$this._tex.height; _$this.graphics.drawTexture(_$this._tex,0,0,_$this._renderArgs[3],_$this._renderArgs[4]); } _$this.repaint(); _$this.parentRepaint(); } tex.loaded?onloaded():tex.on(/*laya.events.Event.LOADED*/"loaded",null,onloaded); }); return HTMLImageElement; })(HTMLElement) /** *@private */ //class laya.html.dom.HTMLLinkElement extends laya.html.dom.HTMLElement var HTMLLinkElement=(function(_super){ function HTMLLinkElement(){ this.type=null; HTMLLinkElement.__super.call(this); this.visible=false; } __class(HTMLLinkElement,'laya.html.dom.HTMLLinkElement',_super); var __proto=HTMLLinkElement.prototype; __proto._onload=function(data){ switch(this.type){ case 'text/css': CSSStyle.parseCSS(data,this.URI); break ; } } __getset(0,__proto,'href',_super.prototype._$get_href,function(url){ var _$this=this; url=this.formatURL(url); this.URI=new URL(url); var l=new Loader(); l.once(/*laya.events.Event.COMPLETE*/"complete",null,function(data){ _$this._onload(data); }); l.load(url,/*laya.net.Loader.TEXT*/"text"); }); HTMLLinkElement._cuttingStyle=new RegExp("((@keyframes[\\s\\t]+|)(.+))[\\t\\n\\r\\\s]*{","g"); return HTMLLinkElement; })(HTMLElement) /** *@private */ //class laya.html.dom.HTMLStyleElement extends laya.html.dom.HTMLElement var HTMLStyleElement=(function(_super){ function HTMLStyleElement(){ HTMLStyleElement.__super.call(this); this.visible=false; } __class(HTMLStyleElement,'laya.html.dom.HTMLStyleElement',_super); var __proto=HTMLStyleElement.prototype; /** *解析样式 */ __getset(0,__proto,'text',_super.prototype._$get_text,function(value){ CSSStyle.parseCSS(value,null); }); return HTMLStyleElement; })(HTMLElement) /** *iframe标签类,目前用于加载外并解析数据 */ //class laya.html.dom.HTMLIframeElement extends laya.html.dom.HTMLDivElement var HTMLIframeElement=(function(_super){ function HTMLIframeElement(){ HTMLIframeElement.__super.call(this); this._getCSSStyle().valign="middle"; } __class(HTMLIframeElement,'laya.html.dom.HTMLIframeElement',_super); var __proto=HTMLIframeElement.prototype; /** *加载html文件,并解析数据 *@param url */ __getset(0,__proto,'href',_super.prototype._$get_href,function(url){ var _$this=this; url=this.formatURL(url); var l=new Loader(); l.once(/*laya.events.Event.COMPLETE*/"complete",null,function(data){ var pre=_$this.URI; _$this.URI=new URL(url); _$this.innerHTML=data; !pre || (_$this.URI=pre); }); l.load(url,/*laya.net.Loader.TEXT*/"text"); }); return HTMLIframeElement; })(HTMLDivElement) })(window,document,Laya); if (typeof define === 'function' && define.amd){ define('laya.core', ['require', "exports"], function(require, exports) { 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); for (var i in Laya) { var o = Laya[i]; o && o.__isclass && (exports[i] = o); } }); }