love2d教程33--window模块
--love的window模块比较简单,直接贴代码了
function love.load()
io.stdout:setvbuf("no") -- 设置io为无缓存模式 --获取显示模式
local w1, h1, flags = love.window.getMode()
--[[ flags是一个表,默认属性如下
fullscreen false
resizable false
fsaa 0
fullscreentype normal
vsync true
minwidth 1
centered true
minheight 1
borderless false
display 1
]]
--love.window.setMode( width, height, flags ) --设置显示模式,flags参数同上 --获取显示器的分辨率,参数是第i个显示器
local w2, h2 = love.window.getDesktopDimensions(flags.display)
--获取love2d程序的窗口大小
local w3, h3 = love.window.getWidth( ) ,love.window.getHeight()
local w4, h4 = love.window.getDimensions( )--同上 --窗口标题
love.window.setTitle("测试window模块")
print(love.window.getTitle()) --获取love2d所在显示器的所有显示模式
local modes = love.window.getFullscreenModes(flags.display)
table.sort(modes, function(a, b) return a.width*a.height < b.width*b.height end) --按宽x高结果大小排序
print("显示器模式")
for k,v in pairs(modes) do
print(k,v.width,v.height)
end -- love.window.getDisplayCount()--获取显示器数量
-- love.window.getFullscreen() --是否全屏 --设置全屏,两种模式 "normal"和desktop",缺省normal模式
--normal会改变屏幕分辨率
--desktop是无边框窗口,窗口自动适应屏幕分辩率,不改变屏幕分辩率大小
--当love2d窗口大小设为800x600可以发现使用desktop鼠标大小不变,而noraml变大
--love.window.setFullscreen( true, "normal" )
--设置图标 任务栏上的图标,图片大小有限制
--love.window.setIcon(love.image.newImageData("1.jpg") )
--love.window.getIcon() --获取图标
--love.window.isCreated() --窗口是否创建
-- scale = love.window.getPixelScale( ) --和mac视网膜显示屏相关,love2d 0.9.1才有这个函数 end local msg=""
local kfocus,mfocus="",""
function love.draw()
love.graphics.print("press 'c' resize,'n' normal fullscreen,'d' desktop fullscreen",,)
love.graphics.print(msg, , )
love.graphics.print(kfocus, , )
love.graphics.print(mfocus, , ) end function love.update() --窗口焦点事件,当失去焦点时,应该让游戏暂停
if love.window.hasFocus() then
kfocus="window has keyboard focus"
else
kfocus="window lose keyboard focus"
end if love.window.hasMouseFocus() then
mfocus="window has mouse focus"
else
mfocus="window lose mouse focus"
end
--窗口是否可见
if love.window.isVisible() then
msg="Window is visible!"
else
msg="Window is not visible!"
end
end function love.keypressed(key)
if key == "escape" then
love.event.quit()
end
--测试love.resize
if key == "c" then
love.window.setMode(,)
end
if key== "n" then
love.window.setFullscreen( true, "normal" )
end
if key=="d" then
love.window.setFullscreen( true, "desktop" )
end end --love.window.isVisible的回调模式
function love.visible(v)
if v then
print("Window is visible!")
else
print("Window is not visible!")
end
end
--窗口大小改变事件,只有不满足love.window.setMode设置的大小时引发
function love.resize(w, h)
msg=("resize width: %d and height: %d."):format(w, h)
print(msg)
end --love.window.hasFocus的回调模式
function love.focus(f)
if not f then
text = "UNFOCUSED!!"
print("LOST FOCUS")
else
text = "FOCUSED!"
print("GAINED FOCUS")
end
end
--love.window.hasMouseFocus的回调模式
function love.mousefocus(f)
if not f then
text = "Mouse is not in the window!"
print("LOST MOUSE FOCUS")
else
text = "Mouse is in the window!"
print("GAINED MOUSE FOCUS")
end
end
love2d教程33--window模块的更多相关文章
- love2d教程34--thread模块
love的thread是一个单独的lua运行环境,与主线程平行.因此可以用线程来处理 处理复杂的计算,不过由于隔离,线程不能访问主线程的变量和方法,而且进程 间通信也受限. 可以在线程里共享lov ...
- [译]Vulkan教程(33)多重采样
[译]Vulkan教程(33)多重采样 Multisampling 多重采样 Introduction 入门 Our program can now load multiple levels of d ...
- [SQL基础教程] 3-3 HAVING
[SQL基础教程] 3-3 HAVING HAVING子句 SELECT col_1,col_2 FROM table GROUP BY col_1,col_2 HAVING col_1 = '2'; ...
- Pytest权威教程07-Monkeypatching,对模块和环境进行Mock
目录 Monkeypatching,对模块和环境进行Mock 简单示例如: 猴子补丁方法 Monkeypatching 返回对象: 构建mock类 全局补丁示例如:阻止"requests&q ...
- Directx11教程(33) 纹理映射(3)
原文:Directx11教程(33) 纹理映射(3) 现在我们在myTutorialD3D11_5的基础上,来逐步编码实现纹理映射,之所以在myTutorialD3D11_5基础上改写,是 ...
- Play Framework Web开发教程(33): 结构化页面-组合使用模板
和你编写代码相似,你编写的页面也能够由多个小的片段组合而成,这些小的片段本身也能够由更小的片段构成.这些小片段一般是能够在其他页面反复使用的:有些部分能够用在全部页面,而有些部分是某些页面特定的.本篇 ...
- 【Amaple教程】2. 模块
正如它的名字,模块用于amaplejs单页应用的页面分割,所有的跳转更新和代码编写都是以模块为单位的. 定义一个模块 一个模块由<module>标签对包含,内部分为template模板.J ...
- XAF应用开发教程(五)验证模块
数据验证是应用程序开发中使用频率最高的功能模块,本节详细介绍一下XAF中如何使用验证模块. XAF 验证模块内置了下面的一些验证规则: 验证规则类型 说明 RuleCombinationOfPrope ...
- 13-(基础入门篇)系统教程演示(GPRS模块)
https://www.cnblogs.com/yangfengwu/p/9966702.html 前几节作为基础教程和系统教程的开端,有了前面的基础才更好的学习基础教程和系统教程. https:// ...
随机推荐
- fiddler在ios10.3系统抓包https失败原因解决
一直是按照以往的设置抓包,设置代理ip,通过Safari下载安装证书,抓包https怎么显示证书无效呢?难道证书被apple设为黑名单了?google后发现,IOS10.3以后,安装了证书不是默认启用 ...
- Item 33: 避免覆盖(hiding)“通过继承得到的名字”
莎士比亚有一个关于名字的说法."What's in a name?" 他问道,"A rose by any other name would smell as sweet ...
- Because, since, as, for
because, as, for, since这几个词都是表示“原因”的连词,语气由强至弱依次为:because→since→as→for;其中because, since, as均为从属连词,引导原 ...
- http://blog.csdn.net/xingfuzhijianxia/article/details/6433918
http://blog.csdn.net/xingfuzhijianxia/article/details/6433918
- SVN-项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改
错误描述: 项目 XXX 受源代码管理.向源代码管理注册此项目时出错.建议不要对此项目进行任何修改 解决办法: 使用记事本打开,项目csproj文件删除图中几行,重新打开解决方案就可以了 原因分析: ...
- 十招让Ubuntu 16.04用起来更得心应手
Ubuntu 16.04是一种长期支持版本(LTS),是Canonical承诺发布五年的更新版.也就是说,你可以让这个版本在电脑上运行五年!这样一来,一开始就设置好显得特别重要.你应该确保你的软件是最 ...
- c#跟objective-c语言特性的对比
拿c#语言跟objective-c做个对比,记录下自己认为是差不多的东西. 学过objc的人相信对category这个东西肯定不陌生,它可以让我们在没有源码的基础上对原先的类添加额外的一些方法,写到这 ...
- Content Provider
Content Provider:提供了数据的接口,可以共享数据 基本概念:1:为存储和获取数据提供了同一的接口2:可以在不同的应用程序之间共享数据3:Android为常见的一些数据提供了Conten ...
- 【菜鸟也疯狂UML系列】——浅析UML四种关系
在UML中.关系是很重要的.它抽象出对象之间的联系,让对象构成某个联系起来的结构.以下将简要分析一下UML中的四种关系:关联.依赖,泛化,实现. 一.举例罗列 1.关联(Association) 关联 ...
- 如何使用angularjs实现表单验证
<!DOCTYPE html> <html ng-app="myApp"> <head> <title>angularjs-vali ...