如何将红色,绿色和蓝色的整数字节值转换为十六进制字符串,然后将其分配给上下文以呈现到HTML5画布上?
例如,转换青色,
var r = 0;
var g = 255;
var b = 255;
Run Code Online (Sandbox Code Playgroud)
到十六进制字符串以分配上下文填充颜色.
this.context.fillStyle = '#00FFFF';
Run Code Online (Sandbox Code Playgroud)
或者有更好的方法来完成这项工作吗?
我正在尝试一些多人游戏的想法,我正在尝试创建一个Java应用程序来提供基于Web浏览器的多人游戏.
我的开发环境是主机上的Eclipse,以及笔记本电脑上的记事本+谷歌浏览器.
我在客户端使用javascript创建websocket,并在服务器端使用java.net.Socket.
我已经设法在两端确认连接,但似乎无法在客户端关闭连接的情况下发送或接收它们之间的任何数据(甚至没有错误;只是似乎吓坏了某事并调用套接字.关).
有没有人有任何想法?
这是一些代码:
客户:
<script type="text/javascript">
var socket;
function init() {
socket = new WebSocket("ws://192.168.0.3:10000");
socket.onopen = function() { alert('OPEN: ' + socket.readyState); }
socket.onmessage = function (msg) { alert('DATA: ' + msg.data); }
socket.onerror = function (msg) { alert('DATA: ' + msg.data); }
socket.onclose = function () { alert('CLOSED: ' + socket.readyState); }
}
function onClick() {
socket.send("YAY!");
}
</script>
Run Code Online (Sandbox Code Playgroud)
服务器:
public static void main(String args[])
{
System.out.printLn("Websocket server test");
ServerSocket connectSocket = null;
try
{ …Run Code Online (Sandbox Code Playgroud) 我正在制作一个基于Web浏览器的多人游戏.鉴于其实时性,我已经确定websockets是处理通信的最佳方式.客户端使用HTML5画布渲染游戏和websockets以与主机通信.
我选择使用PHP来托管游戏,因为它似乎是托管服务提供商的首选.我以前没有使用PHP,但是在Java中使用websockets做了类似的事情,但是在很大程度上依赖于多线程.
我一直在寻找有关多个客户端的PHP套接字的一些教程; 但是他们中的大多数都会为每个客户端分配新流程.由于我将有一个不断运行的游戏循环,我不认为这是合适的.
我想要实现的是在连接时为每个客户端分配端口,监听新客户端,与当前客户端列表交换数据以及一起运行游戏循环的方法.
我需要帮助的地方是:
谁能给我一些关于如何实现这些目标的技术建议?我不认为这对于PHP的问题看起来太多了但是如果我错了就纠正我!
我想要实现服务器端的一些伪代码.这些函数都不应该阻塞:数组客户端;
while(gamerunning)
{
CheckForNewClients();
GetStatusFromClients();
DoGameUpdate();
SendGameStateToClients();
}
Run Code Online (Sandbox Code Playgroud)
[更新]对于任何感兴趣的人,我创建了一个支持Web套接字的专用应用程序(特别是使用Java和'TooTallNates'的Web套接字库)而不是实际的Web服务,因为它似乎更有意义,尽管似乎大多数Web浏览器都有由于安全问题,因此在垃圾箱中挂起网络插座.
如何设置自定义控件的默认属性,即首次将它们拖动到Designer中的表单上?
无法在此处或通过Google找到答案; 我得到的是如何约束价值观.
使用Width&Height作为示例,如果我在构造函数中设置它们,则每次打开Designer时它们都会应用于控件.如何将它们设置为默认值,在用户更改属性后永远不会再次应用它?
我正在构建一个iPhone应用程序,显示指向我创建的Web应用程序的UIWebView.
Web应用程序对数据项进行频繁的Web服务调用,这些数据项用于在画布上设置控件动画.对数据的调用使用jQuery ajax,通过JSON传递参数并接收XML响应.
我发现当用户与UIWebView的交互正在发生时,javascript setTimeout方法被阻止,似乎根本不执行.很公平; 有办法解决这个问题.
但主要的问题是,在用户交互(缩放,平移等)之后,ajax web服务调用将一直失败,我无法确定原因.即使它们是反复制作的,在接下来的几分钟内,它们都不会进入网络服务.如果您完全离开UIWebView,只要Web服务启动并且存在连接,它们就永远不会失败.
任何人都可以建议为什么,以及如何解决/解决这个问题?
快速更新:根据Safari移动调试器,错误功能中的"响应"对象未定义.(例如,如果我将URL设置为无效,则可以使用.然后可以通过[webView stringByEvaluatingJavascript:@"lastError"]从objective-c调用它,但是为此"触及uiwebview"错误抛出异常):
$.ajax({
type: "POST",
url: "WebService.asmx/GetValues",
async: true,
data: "{'pageVersionIndex': " + PageVersionIndex + " , 'timeStreamIndex': '" + TimeStream + "'}",
contentType: "application/json; charset=utf-8",
dataType: "xml",
success: function (response) { UpdateControls(response); },
error: function (response, status, errorthrown) {
calling = false;
lastError = response.statusText; //Throws exception
connectionInterrupted = true;
DataRoutine = window.setTimeout(DataService, dataFrequency); }
});
Run Code Online (Sandbox Code Playgroud) 我正在创建一个处理非常大的图像文件的cad查看器,我正在尝试以尽可能高的帧速率和低内存占用来优化它.
它使用GDI +渲染到面板上.
目前的缺陷是图像渲染.我正在使用的一些文件参考图像特别大(8000x8000像素).我已经优化了内存使用量,只在它们变得可见时加载它们,并在它们不可用时将它们处理掉.这样可以减少程序内存耗尽的可能性,但可以防止图像过于频繁地加载和卸载; 但是渲染图像本身(context.DrawImage)仍然会带来非常大的开销.
我现在正在探索将图像blitting到某种较小缓冲区的方法,渲染这个(通常小得多)缓冲区,然后在缩放级别发生显着变化时刷新/重建它.
问题是,我无法在GDI中找到任何相关规定.任何人都可以建议我如何实现它?
我正在使用OpenNI开发深度处理(Xbox Kinect,Asus Xtion等)应用程序.
当传感器提供新的深度数据时,我需要一种非常简单快速的Windows窗体绘图方式(30或60 fps,具体取决于分辨率).
目前,当数据可用时,我从单独的线程中使双缓冲面板无效,然后在面板的paint方法中设置位图的像素,产生可预测的可怕5fps.
System.Drawing.Graphics似乎缺乏设置单个像素的快速方法,除非任何人都可以指示其他方式.
我确实只需要设置像素颜色,因此如果可能的话,我们希望避免使用第三方高速渲染API,并且理想情况下使用尽可能本地的东西.
有没有人有什么建议?
我有一个asp.net WebMethod,它返回一个XmlDocument对象.我可以使用jquery ajax成功调用该方法,但似乎无法使函数成功(服务器端webmethod使用正确的参数调用,但客户端方法失败并带有'undefined parser error').
重现,Asp.net C#:
[WebMethod]
public static XmlDocument test(string name)
{
XmlDocument result = new XmlDocument();
XmlElement root = result.CreateElement("Data");
result.AppendChild(root);
XmlElement element = result.CreateElement("AnElement");
element.SetAttribute("Name", name);
root.AppendChild(element);
return result;
}
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
function CallForData(name) {
$.ajax({
type: "POST",
url: "AppName.aspx/test",
data: "{'name': " + name+ "'}",
contentType: "application/json; charset=utf-8",
dataType: "xml",
success: function (response) { ParseXML(response); },
error: function (data, textStat, req) { alert(data + ' - ' + textStat + ' - ' + req); } …Run Code Online (Sandbox Code Playgroud) 我目前正在使用DLR创建和执行一个简单的python计算:
ScriptRuntime runtime = Python.CreateRuntime();
ScriptEngine engine = runtime.GetEngine("py");
MemoryStream ms = new MemoryStream();
runtime.IO.SetOutput(ms, new StreamWriter(ms));
ScriptSource ss = engine.CreateScriptSourceFromString("print 1+1", SourceCodeKind.InteractiveCode);
CompiledCode cc = ss.Compile();
cc.Execute();
int length = (int)ms.Length;
Byte[] bytes = new Byte[length];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(bytes, 0, (int)ms.Length);
string result = Encoding.GetEncoding("utf-8").GetString(bytes, 0, (int)ms.Length);
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)
哪个打印'2'到控制台,但;
我想得到1 + 1的结果,而不必打印它(因为这似乎是一个昂贵的操作).我将cc.Execute()的结果赋值为null.有没有其他方法可以从Execute()获得结果变量?
我也试图找到一种传递参数的方法,即结果是arg1 + arg2并且不知道如何做到这一点; Execute唯一的其他重载将ScriptScope作为参数,我以前从未使用过python.有人可以帮忙吗?
[编辑]这两个问题的答案:( Desco被接受为指向正确的方向)
ScriptEngine py = Python.CreateEngine();
ScriptScope pys = py.CreateScope();
ScriptSource src = py.CreateScriptSourceFromString("a+b");
CompiledCode compiled = src.Compile();
pys.SetVariable("a", 1);
pys.SetVariable("b", 1);
var …Run Code Online (Sandbox Code Playgroud)