[]分享:Panel下动态修改子容器宽高并刷新显示!

package
{
import laya.display.Sprite;
import laya.events.Event;
import laya.ui.Button;
import laya.ui.Panel;
import laya.utils.Browser;
import laya.utils.Handler;

public class LayaUISample
{
public function LayaUISample()
{
// 不支持WebGL时自动切换至Canvas
Laya.init(Browser.width, Browser.height);
//ui组件,除了image和clip外,其他皮肤均需要预加载资源,此处添加button和panel垂直滚动条的皮肤使用
Laya.loader.load(['button-4.png','ui/vscroll.png','ui/vscroll$bar.png','ui/vscroll$down.png','ui/vscroll$up.png'],Handler.create(this,start));
}

private function start():void
{
var panel:Panel=new Panel();//添加panel,切忌要先将panel添加到舞台同时设置宽高,然后再去添加子对象
panel.width=500;
panel.height=500;
panel.vScrollBarSkin='ui/vscroll.png';//设置panel的垂直滚动条,方便看出panel的滚动变化
Laya.stage.addChild(panel);

var sp:Sprite=new Sprite();//panel的子容器sp
sp.graphics.drawRect(0,0,500,1000,"#FF0000");
sp.size(500,1000);
panel.addChild(sp);


var btnAdd:Button=new Button();//点击按钮,动态添加sp的子对象,并改变子对象sp的宽高
btnAdd.skin='button-4.png';
Laya.stage.addChild(btnAdd);
btnAdd.x=550;
btnAdd.label='ADD1000';
btnAdd.on(Event.CLICK,this,onClick,[sp,panel]);
}

private function onClick(sp:Sprite,panel:Panel):void
{
trace('Add1000');
for(var i:int=0;i<1000;i++)
{
var button:Button=new Button('button-4.png');
button.label='button:'+i;
sp.addChild(button);
button.y=i*60;
}
sp.graphics.clear();
sp.graphics.drawRect(0,0,500,1000*60,"#FF0000");
sp.size(500,1000*60);//sp高度改变
sp.event('resize');//此处是重点,sp动态改变宽高后,需要派发一个resize事件
}
}
}
已邀请:

layabox

赞同来自: Cherry006

 
 
 
 
 
 
 
 
 
:)

moketao

赞同来自:

感谢分享,看到重点了,容器改变大小时需主动派发一个resize事件 :D

水水水无月~

赞同来自:

求助:panel可滚动的高度由子容器决定,但微信小游戏真机中,子容器height大于4096(应该物理分辨率)会报错[wxgl]Warning: Image [Dynamic] larger than MAX_TEXTURE_SIZE (4096),这个怎么解决呢,或者是我理解有误吗,拜谢

ME

赞同来自:

感谢分享,非常有用

要回复问题请先

商务合作
商务合作