- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个简单的 2D 迷宫游戏,您可以在其中穿过许多房间。我想通过限制玩家的视野来让它变得有点挑战。起初我想将框架内的默认鼠标图标替换为半透明的 PNG 椭圆,但后来我意识到我需要遮挡它周围的东西。
我能想到的唯一方法是让鼠标指针图标成为一个比框架大的图像(这样当用户移动到一个角落时它仍然是黑色的)填充它然后放置透明- 指针区域的渐变椭圆。
我想知道的是,这是否可能,我将如何着手去做?我正在学习 java,所以示例和 oracle 文档将对我有很大帮助。提前致谢!
从这里和这里看到 link (加载需要一段时间) PS:我用的是eclipse。
最佳答案
您已经确定了基本要求。
以下示例基本上使用 RadialGradientPaint
在图像上绘制“聚光灯”。它使用 MouseMoitionListener
来监视鼠标的位置并在您移动时更新聚光灯。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Point;
import java.awt.RadialGradientPaint;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class MouseCover {
public static void main(String[] args) {
new MouseCover();
}
public MouseCover() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public static class TestPane extends JPanel {
public static final int RADIUS = 200;
private Point mousePoint = null;
private BufferedImage background;
public TestPane() {
MouseAdapter mouseHandler = new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
mousePoint = e.getPoint();
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
mousePoint = null;
repaint();
}
};
addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
try {
background = ImageIO.read(...);
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Override
public Dimension getPreferredSize() {
return background == null ? new Dimension(200, 200) : new Dimension(background.getWidth(), background.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
if (background != null) {
int x = (getWidth() - background.getWidth()) / 2;
int y = (getHeight() - background.getHeight()) / 2;
g2d.drawImage(background, x, y, this);
}
Paint paint = Color.BLACK;
if (mousePoint != null) {
paint = new RadialGradientPaint(
mousePoint,
RADIUS,
new float[]{0, 1f},
new Color[]{new Color(0, 0, 0, 0), new Color(0, 0, 0, 255)});
}
g2d.setPaint(paint);
g2d.fillRect(0, 0, getWidth(), getHeight());
g2d.dispose();
}
}
}
关于Java Mouse "Flashlight"效果如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488853/
我正在尝试为Firebase设置Flashlight example(首先在本地),但被卡住了。我设法将搜索推到Firebase: 但是我没有收到响应到Firebase 中。我的app.js日志说 C
我正在编写一个简单的 2D 迷宫游戏,您可以在其中穿过许多房间。我想通过限制玩家的视野来让它变得有点挑战。起初我想将框架内的默认鼠标图标替换为半透明的 PNG 椭圆,但后来我意识到我需要遮挡它周围的东
我目前正在尝试使用 Firebase、Flashlight 和 Swift 创建一个搜索函数,以从实时数据库中检索随机对象。 我正在尝试在/search/request 处对 Firebase 执行以
我正在尝试开发一个手电筒应用程序作为我的第一个“真正的”应用程序,并且几乎一切正常。但每次我想关闭手电筒时,我的应用程序就会崩溃。代码和Logcat日志如下: package com.leuchtst
我正在尝试集成Firebase Flashlight在我的 Node.js 应用程序中使用 ElasticSearch,以便对我的 Firebase 集合进行搜索操作。我想在 api.js 中定义我的
Camera cam = Camera.open(); Parameters p = cam.getParameters(); p.setFlashMode(Parameters.FLASH_
我正在使用Flashlight Firebase插件 我正在使用这个example并且工作正常 在示例中,您可以看到 example.js 文件具有如下查询方法 // display search
我对 HTML 和 JavaScript 还很陌生,所以请多多关照。我需要创建一个“手电筒”,在点击时从黑色变为白色,反之亦然。我可以到达我可以点击屏幕的位置,它会切换为白色,但我怎样才能将它切换回黑
我正在尝试将 ElasticSearch 与 Firebase 集成。我正在使用 Flashlight integration从 Firebase 进行设置。我已按照上面链接的 Github 存储库中
我有一个问题,我不知道如何从 Unity 访问我的 java 插件。 这是 Java 代码: package fr.vincentmazet.utilslibrary; import android.
我在 Android Studio 中使用 CameraSource 制作了 Camera Preview new CameraSource.Builder(this , detector).setA
感谢手电筒的教程https://github.com/firebase/flashlight , 这在某种程度上很容易用 Firebase 进行全文搜索。 但是,如果您保留免费的 ES 实例,它会在并
伟大的开发者。我正在使用 io.pristine.libjingle:11139 的 webRTC 库进行视频通话。一切顺利,现在我只想打开手电筒,我研究了几乎所有与手电筒相关的问题,在那里我发现手电
我是一名优秀的程序员,十分优秀!