Javascript 从xml创建gui时出现问题->奇怪的CPButton行为
你好 我对objective-j和卡布奇诺还不熟悉,只是想创造一个 小型应用程序,从xml文件动态创建gui 不幸的是,它只能部分起作用。好像按钮坏了 区域是无序的。这意味着,如果 我点击按钮旁边的按钮 请帮帮我。我不明白Javascript 从xml创建gui时出现问题->奇怪的CPButton行为,javascript,cappuccino,objective-j,Javascript,Cappuccino,Objective J,你好 我对objective-j和卡布奇诺还不熟悉,只是想创造一个 小型应用程序,从xml文件动态创建gui 不幸的是,它只能部分起作用。好像按钮坏了 区域是无序的。这意味着,如果 我点击按钮旁边的按钮 请帮帮我。我不明白 - (void)applicationDidFinishLaunching:(CPNotification)aNotification { mControlList = [CPArray alloc]; theWindow = [[CPWindow allo
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
{
mControlList = [CPArray alloc];
theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero()
styleMask:CPBorderlessBridgeWindowMask],
contentView = [theWindow contentView];
[contentView setFrame:[[contentView superview] bounds]];
[contentView setAutoresizingMask:CPViewWidthSizable |
CPViewHeightSizable];
// Loadxmlfile
var xhttp;
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest()
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP")
}
xhttp.open("GET","test.xml",false);
xhttp.send("");
xmlDoc = xhttp.responseXML;
//Get controls nodeand iterate through all controls
var node = xmlDoc.getElementsByTagName("controls")[0];
for (var i=0; i<node.childNodes.length; i++) {
if(node.childNodes[i].nodeName=="button"){
var item = node.childNodes[i];
var name = item.attributes["name"].nodeValue;
var text = item.getElementsByTagName("text")
[0].childNodes[0].nodeValue;
var x= item.getElementsByTagName("rect")
[0].attributes["x"].nodeValue;
var y= item.getElementsByTagName("rect")
[0].attributes["y"].nodeValue;
var width= item.getElementsByTagName("rect")
[0].attributes["width"].nodeValue;
var height= item.getElementsByTagName("rect")
[0].attributes["height"].nodeValue;
var b = [[Button alloc] InitWithParent:contentView Text:text X:x
Y:y Width:width Height:height];
[mControlList addObject:b];
}
}
[theWindow orderFront:self];
}
卡布奇诺免费为您提供大部分功能 您可以使用加载文件 另外,或者nib2cib将自动为您创建cib文件,卡布奇诺本身已经知道如何从cib文件构建其UI 如果您真的想实现自己的系统来实现这一点,您能提供您试图加载的实际XML吗?还可以尝试在不使用XML的情况下加载按钮。例如:
var myButton = [CPButton buttonWithTitle:@"My Cool Button"];
[contentView addSubview:myButton];
+buttonWithTitle:将自动在已初始化的按钮上调用-sizeToFit,因此您可以将其添加到contentView中,并以适当的大小显示它。您的XML读取器不会生成字符串而不是整数吗?我会在没有XML部分的情况下测试按钮代码。Thx,我刚刚修复了它。。。。没错,在将字符串值传递给CGRectMake之前,必须将其转换为数字。令人困惑的是,无论如何按钮都画得正确,但只有鼠标事件不起作用。。。
var myButton = [CPButton buttonWithTitle:@"My Cool Button"];
[contentView addSubview:myButton];