我正在使用Javascript和HTML制作RTS游戏.听起来雄心勃勃我知道,但我不是在为这里的明星拍摄.只是一些让我受理的东西.
我目前正在研究游戏的运动部分.我有一个应该工作的运动引擎,但是有一个问题.在我的脚本中,我使用不等式语句(>和<)将绝对定位字符的当前左值和最高值与其目标(可能正在移动)的值进行比较.问题是我得到的反馈形式document.getElementById(nameVar).style.left是字符串(例如200px)而不是数字(例如200),因此比较不起作用.
我的问题是,有没有办法把字符串变成一个我可以操纵我想要的方式的数字?要么通过使用更改的地址,要么一旦我得到它就通过反馈预先形成一些程序.
任何帮助都会很棒.
可能重复:
您可以使用JavaScript进行桌面开发吗?
我非常熟悉基于Web的JavaScript,因为它涉及到html和canvas,但我想知道是否可以使用不能在浏览器中打开的javascript创建一个完整的独立应用程序.是否有任何GUI或命令提示符允许我这样做?
如果没有,我可能愿意写一些其他可以读取html的程序,就像Notch在Minecraft登录屏幕上做的那样.是否有捷径可寻?
我在我的 Go 应用程序中使用gorm和 postgres。
我想在数据库中创建一个新用户,但该用户很有可能已经存在。如果是这样,我不想对数据库做任何事情,但我想知道它以便我可以告诉用户。
好消息是,这已经发生了gorm.Create(..)。尝试使用重复的唯一键创建记录将返回错误。有两个问题:
Create()似乎容易出错的错误字符串之外,我不知道如何区分这两个事件。Create()使用已存在的对象进行调用会将错误消息记录到 stdout。我并不真的认为这是一个“错误”,因为我期待它发生,而且我不想用一堆这些警告淹没我的日志。我知道我可以使用事务首先检查具有给定 id 的用户,然后在用户不存在的情况下创建它们,但似乎应该有一个更简单的解决方案来解决这样的基本问题。你该怎么做?
我目前正在这样做:
func (self databaseWrapper) CreateUser(user *User) error {
db := self.db
db.NewRecord(*user)
err := db.Create(user).Error
if err != nil {
if db.Where(user.ID).Take(&User{}).Error == nil {
return fmt.Errorf("A user already exists with id %v", user.ID)
}
if db.Where(User{Email: user.Email}).Take(&User{}).Error == nil {
return fmt.Errorf("A user already exists with the given email address: %v", user.Email)
}
return fmt.Errorf("Error creating user")
}
return …Run Code Online (Sandbox Code Playgroud) 我正在使用gtk-rs创建一个 UI 应用程序。在该应用程序中,我必须生成一个线程来持续与另一个进程通信。有时,我必须根据该线程中发生的情况更新 UI。但是,我不确定如何执行此操作,因为我无法跨线程保存对 UI 任何部分的引用。
这是我尝试过的代码:
use gtk;
fn main() {
let application =
gtk::Application::new(Some("com.github.gtk-rs.examples.basic"), Default::default()).unwrap()
application.connect_activate(|app| {
let ui_model = build_ui(app);
setup(ui_model);
});
application.run(&[]);
}
struct UiModel { main_buffer: gtk::TextBuffer }
fn build_ui(application: >k::Application) -> UiModel {
let glade_src = include_str!("test.glade");
let builder = gtk::Builder::new();
builder
.add_from_string(glade_src)
.expect("Couldn't add from string");
let window: gtk::ApplicationWindow = builder.get_object("window").unwrap();
window.set_application(Some(application));
window.show_all();
let main_text_view: gtk::TextView = builder.get_object("main_text_view")
return UiModel {
main_buffer: main_text_view.get_buffer().unwrap(),
};
}
fn setup(ui: UiModel) {
let child_process = …Run Code Online (Sandbox Code Playgroud) 使用Graphics2d,我试图BufferedImage在背景图像上绘制.在这张图片的任意一点,我想在绘制的图像中"切出一个圆孔"让背景显示出来.
我希望这个洞不是一个坚固的形状,而是一个渐变.换句话说,BufferedImage应该具有与其距孔中心的距离成比例的α/不透明度.
我对Graphics2d渐变有点熟悉AlphaComposite,但有没有办法将它们结合起来?
是否有(不是非常昂贵)的方式来实现这种效果?
我是Rust的新手,我正在用活塞发动机进行一场比赛,让我的脚湿润.
我想使用精灵表来渲染一堆实体,但很多实体可能会共享精灵表,所以我只想加载和存储每个文件的一个副本.
在伪代码中,我的方法基本上是这样的:
fn get_spritesheet(hashmap_cache, file):
if file not in hashmap_cache:
hashmap_cache[file] = load_image_file(file)
return hashmap_cache[file]
Run Code Online (Sandbox Code Playgroud)
那么可能是这样的:
//These 'sprite' fileds point to the same image in memory
let player1 = Entity { sprite: get_spritesheet(cache, "player.png") };
let player2 = Entity { sprite: get_spritesheet(cache, "player.png") };
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用Rust的所有权系统遇到很多障碍(可能是因为我不理解它).
据我所知,我希望cahe/hashmap"拥有"图像资源.具体来说,返回引用(如在get_spritesheet函数中)似乎很奇怪.此外,结构是否可能不拥有其所有成员?我想是的,但我对如何做到这一点很困惑.
编辑:问题可以简化为:以下 Node.js 代码给出了“无效的 IV 长度”错误。为什么?IV应该是什么?
const crypto = require('crypto')
const decipher = crypto.createDecipheriv('aes-128-gcm', crypto.randomBytes(16), crypto.randomBytes(16))
Run Code Online (Sandbox Code Playgroud)
我在 GCM 模式下使用 AES 来加密一些数据,但我使用两种不同的语言和库进行加密和解密,而且它们似乎对我需要的东西有不同的词汇表。
我正在使用 Python 库 ( Crypto ) 进行加密。该encrypt_and_digest方法接受一个 128 位的密钥和一条消息,并返回一个 128 位的随机数、128 位的标签和一个密文。
(取自本例的加密代码)
我正在使用默认的 Node.js加密库进行解密。该库需要一个会话密钥、一个标签和一个 IV。当我将 Python 库中的 nonce 作为 IV 传递时,它给了我一个“无效的 iv 大小”错误。 Node 库的示例似乎使用 12 个字符的字符串作为 IV。
我的解密代码如下所示(取自此处):
var decipher = crypto.createDecipheriv(algorithm, password, nonce)
decipher.setAuthTag(encrypted.tag);
var dec = decipher.update(encrypted.content, 'hex', 'utf8')
Run Code Online (Sandbox Code Playgroud)
这个方案的 IV 和 nonce …
我在 Android 6.1、sdk 23 上使用新的camera2 api。
我有两个请求:预览和静态图像捕获请求。我想让闪光灯在每次静止图像请求时关闭,但没有任何预闪光。现在,我的请求如下所示:
CaptureRequest.Builder requester = mCameraDevice.createCaptureRequest(mCameraDevice.TEMPLATE_STILL_CAPTURE);
requester.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
requester.set(CaptureRequest.CONTROL_CAPTURE_INTENT, CaptureRequest.CONTROL_CAPTURE_INTENT_STILL_CAPTURE);
requester.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED);
requester.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL);
requester.addTarget(mCaptureBuffer.getSurface());
mCaptureSession.capture(requester.build(), null, null);
Run Code Online (Sandbox Code Playgroud)
它似乎适用于一部手机(摩托罗拉 Moto G),但不适用于另一部手机(Nexus 5 - 闪光灯根本无法打开)。我知道 Nexus 的闪光灯可以工作,因为我可以用其他相机应用程序触发它,所以我猜有一些默认值我没有设置。
还有另一种方法可以做到这一点/我可以设置更多标志吗?
谢谢!
编辑:
LIMITED支持camera2的设备。仅仅因为您可以使用相机 2 访问相机并不意味着您可以控制所有功能。查看此答案以了解更多信息