小编Eri*_*ans的帖子

如何在SurfaceView中禁用硬件加速?

我有这个"确切"的问题:

setShadowLayer Android API差异

我有一个玩家和敌人,我正在用14 API进行编译.问题是:从14 API开始,默认情况下启用硬件加速,并且所有绘图方法都不支持它(例如,setShadowLayer(),我想要使用的那个).因此,解决方案很简单,就像上面主题中介绍的那样.问题是:他使用View,我使用SurfaceView来获得更好的游戏性能.我的Surface View声明如下:

public class Screen extends SurfaceView implements Runnable { // Code }
Run Code Online (Sandbox Code Playgroud)

所以,我刚刚添加到构造函数中:

public Screen(Context context) {
    super(context);
    holder = getHolder();
    setLayerType(View.LAYER_TYPE_SOFTWARE, null); // Here.
}
Run Code Online (Sandbox Code Playgroud)

要在我的SurfaceView上禁用硬件加速,以使我的阴影看起来不显眼,结果:整个SurfaceView停止工作.我无法显示发生了什么,但是当我禁用硬件加速时它只是没有绘制任何东西.我对此非常悲观,因为看起来SurfaceView本身依赖于硬件加速,但是当插入Canvas时,Canvas不能正常运行阴影.

android shadow surfaceview hardware-acceleration

5
推荐指数
1
解决办法
2242
查看次数

Music21 Midi错误:类型对象'_io.StringIO'没有属性'StringIO'.怎么解决?

所以,我已经按照这个问题来播放Music21的声音了,这里是代码:

from music21 import *
import random

def main():

#  Set up a detuned piano 
#  (where each key has a random 
#  but consistent detuning from 30 cents flat to sharp)
#  and play a Bach Chorale on it in real time.


    keyDetune = []
    for i in range(0, 127):
        keyDetune.append(random.randint(-30, 30))

    b = corpus.parse('bach/bwv66.6')
    for n in b.flat.notes:
        n.microtone = keyDetune[n.midi]
    sp = midi.realtime.StreamPlayer(b)
    sp.play()

    return 0

if __name__ == '__main__':

    main()
Run Code Online (Sandbox Code Playgroud)

这是追溯:

Traceback …
Run Code Online (Sandbox Code Playgroud)

python python-3.x music21

4
推荐指数
1
解决办法
6841
查看次数

如何使用Pyglet/OpenGL绘制具有自定义粗细的线条?(Python 3.x)

if __name__ == '__main__':
    app = App()
    game_area = None

    labels = [pyglet.text.Label("0"*8,
              font_name = "Times New Roman",
              font_size=18,
              color = (255, 0, 0, 255),
              x = app.width // 2, 
              y = app.height // 2 - n,
              anchor_x = "center", 
              anchor_y = "center") for n in range(0, 100, 18)]

    @app.event
    def on_draw():
        app.clear()
        [label.draw() for label in labels]
        pyglet.graphics.draw(4, pyglet.gl.GL_LINES, 
            ("v2f", (0, 0, 0, app.height, app.width / 2, app.height, app.width / 2, 0))
        )

    pyglet.app.run()
Run Code Online (Sandbox Code Playgroud)

我的这个例子给了我这个:

在此输入图像描述

我画了一个矩形(4个线段),但它们太薄了.如何更改每条线的粗细?

python opengl pyglet line

4
推荐指数
1
解决办法
3854
查看次数

从文件夹动态导入所有模块

我知道存在这个问题,但它们不仅不起作用,而且也不完全是我想要的。我正在开发一款赛车游戏,想要动态加载文件夹中的所有赛道(它们存储为 .py 而不是 .json)。我不想知道曲目的名称,因为用户可以随意修改/添加它们。我只想导入他们的数据。因此,例如:

>tracks 
>>track0.py
>>track1.py
>>track2.py
>>track3.py
>>track4.py
Run Code Online (Sandbox Code Playgroud)

在每个轨道中,我都有这样的数据:

track_ground_data = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1],
    [1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1], …
Run Code Online (Sandbox Code Playgroud)

python import module python-import python-3.x

4
推荐指数
1
解决办法
8427
查看次数

如何有效地掌握Pygame中的密钥?

[编辑]我已经在那里发布了解决方案.[/编辑]

我发现了两个相关的问题:

但我想要具体.如何?

while not done:
    for e in event.get():
        if e.type == KEYDOWN:
            keys = key.get_pressed()
            if e.type == QUIT or keys[K_ESCAPE]:
                done = True
            if keys[K_DOWN]:
                print "DOWN"
Run Code Online (Sandbox Code Playgroud)

当我按向下箭头时,它会打印,但它只打印一次.如果我想再打印一次,我需要再次按它.

如果我使用while关键字,

while keys[K_DOWN]:
    print "DOWN"
Run Code Online (Sandbox Code Playgroud)

由于一些不明原因,我得到了一个无限循环.

这种合理的替代方案也是无用的:

if ((e.type == KEYDOWN) and keys[K_DOWN]):
    print "DOWN"
Run Code Online (Sandbox Code Playgroud)

还有另一个以某种方式清理事件,你可以使用while:

while not done:
    for e in event.get():
        if e.type == KEYDOWN:
            keys = key.get_pressed()
            if e.type == QUIT or keys[K_ESCAPE]:
                done = True
            while keys[K_DOWN]:
                print "DOWN"
                event.get()
                keys …
Run Code Online (Sandbox Code Playgroud)

python pygame key input keydown

3
推荐指数
1
解决办法
9171
查看次数

如果我使用 grid(),为什么当我调整窗口大小时小部件不会缩放?

我在 Windows 7 中使用 tkinter 和 Python 3.4。

我以非绝对方式定位(我没有使用位置,我使用网格),因此,当我自动调整窗口大小时,小部件应该缩放。然而,这并没有发生,而且我没有抓住这一点。这是我的代码:

import tkinter as tk

class App(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.config()
        self.grid()
        self.create_widgets()

    def config(self):
        self.master.title("Pykipedia Explorer")

    def create_widgets(self):
        self.search_label = tk.Label(self, text="Search: ")
        self.search_label.grid(row=0, column=0, sticky=tk.N+tk.SW)
        self.search_entry = tk.Entry(self)
        self.search_entry.grid(row=0, column=0, padx=60, sticky=tk.N+tk.SW)
        self.search_button = tk.Button(self, text="Explore!")
        self.search_button.grid(row=0, column=0, padx=232, sticky=tk.SW)
        self.content_area = tk.Text(self)
        self.content_area.grid(row=1, column=0)
        self.content_scroll_bar = tk.Scrollbar(self, command=self.content_area.yview)
        self.content_scroll_bar.grid(row=1, column=1, sticky=tk.NW+tk.S+tk.W)
        self.content_area["yscrollcommand"] = self.content_scroll_bar.set
        self.quit_button = tk.Button(self, text="Quit", command=self.quit)
        self.quit_button.grid(row=2, column=0, sticky=tk.SW)

def main():

    app = App() …
Run Code Online (Sandbox Code Playgroud)

python resize tkinter

3
推荐指数
1
解决办法
2119
查看次数

为什么无法在 PHP 的匿名函数中访问父/外部作用域的变量?

这是我的匿名函数:

<td><?=call_user_func(function($x) { if ($x == 1) { echo $produto->retornaMedida($dadosProdutos[$t]->medida_id); } else if ($x == 2) { echo "N/A"; } }, $dadosProdutos[$t]->produto_id)?></td>
Run Code Online (Sandbox Code Playgroud)

如果我不在条件范围内使用“超出范围”的内容,它会很好地工作,如下所示:

<td><?=call_user_func(function($x) { if ($x == 1) { echo "Whatever"; } else if ($x == 2) { echo "N/A"; } }, $dadosProdutos[$t]->produto_id)?></td>
Run Code Online (Sandbox Code Playgroud)

但是,$dadosProdutos例如,当我使用 时,我得到:

[24-Dec-2015 03:47:58 America/Sao_Paulo] PHP Notice:  Undefined variable: dadosProdutos in G:\Insanity\Web\xampp\htdocs\sisconbr-old\site\modulos\pedido\minhas-cotacoes.php on line 269
Run Code Online (Sandbox Code Playgroud)

当在匿名函数之外使用时, $dadosProdutos 不是“未定义”:

<td><?=$produto->retornaMedida($dadosProdutos[$t]->medida_id)?></td>
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我将外部变量作为参数传递给匿名函数时,我没有任何问题。我认为这就是他们在 C++ 的 lambda 上“捕获超出范围的变量”的意思

php function anonymous-function

3
推荐指数
1
解决办法
581
查看次数

是否可以列出表的所有功能?

我是Lua编程语言的新手,我找不到列出给定表中定义的所有现有函数的方法.我已经检查了调试表的文档,并且可以仅获取函数的详细信息,而不是整个表的详细信息.

是否有类似Lua中Python解释器的dir()函数?是否可以列出表的所有方法/功能?

lua

3
推荐指数
1
解决办法
628
查看次数

导入子模块的子模块上出现 ModuleNotFoundError

假设我们有以下结构:

outer_module.py|
               |subfolder|
                         |__init__.py
                         |inner_module.py
                         |foo.py
Run Code Online (Sandbox Code Playgroud)

outer_module.py我们会有:

from subfolder.inner_module import X
Run Code Online (Sandbox Code Playgroud)

inner_module.py我们会有:

from foo import Y
Run Code Online (Sandbox Code Playgroud)

然后我就开始ModuleNotFoundError: No module named 'foo'运行outer_module.py. 如何导入这个导入子模块的子模块而不出现 ModuleNotFoundError?

python python-import python-3.x

3
推荐指数
1
解决办法
4177
查看次数

如何使用 KeyAdapter 检测 CTRL+SHIFT+ANY_KEY?

这是我的代码:

\n\n
        tabbedPane.addKeyListener(new java.awt.event.KeyAdapter() {\n            public void keyPressed(java.awt.event.KeyEvent evt) {\n\n                CheckShortcut controlShortcut = (key) -> {\n                    return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK) != 0);\n                };\n\n                CheckShortcut controlShiftShortcut = (key) -> {\n                    return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK & KeyEvent.SHIFT_MASK) != 0);\n                }; // Does not work <<<<<\n\n                if (controlShortcut.f(KeyEvent.VK_N)) {\n                    createNewFile();\n                } else if (controlShortcut.f(KeyEvent.VK_O)) {\n                    openFile();\n                } else if (controlShortcut.f(KeyEvent.VK_S)) {\n                    save();\n                } else if (controlShiftShortcut.f(KeyEvent.VK_S)) {\n                    saveAs();\n                } else if (controlShortcut.f(KeyEvent.VK_Q)) {\n                    System.exit(0);\n                } …
Run Code Online (Sandbox Code Playgroud)

java swing key-events keyevent keylistener

2
推荐指数
1
解决办法
1950
查看次数