- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚刚开始编码和学习 javafx 并正在做一个简单的项目,我的问题是在我的图形上下文中添加发光效果后,动画速度急剧减慢。
/**
* JavaFX rocks ;)
*/
public class CDLMatrix extends Application {
Stage matrixStage;
private final String characters = "Effect glow = new Glow(1.0); gc.setEffect(glow); WHY SHATTERS ?!";
private final Random random = new Random();
protected final Font font = Font.font("MS PGothic", FontWeight.BOLD, 15);
char[] data = new char[2000 * 2000];
int[] path = new int[2000 * 2000];
private long lastTime = 0;
int getNumberOfCharsPerRow() {
return (int) matrixStage.getWidth() / 12;
}
int getNumberOfCharsPerColumn() {
return (int) matrixStage.getHeight() / 12;
}
// takes random for now
private char getChar() {
return characters.charAt(Math.abs(random.nextInt()
% characters.length()));
}
void update(long now) {
if (lastTime == 0) {
lastTime = now;
}
// fadeTime = how fast trail will fade out
// flipRate = how fast trail chars will change
final int fadeTime = 3;
final float flipRate = 0.01f;
final int fillStart = 100;
final float fillRate = 0.01f;
int numberOfCharsPerRow = getNumberOfCharsPerRow();
int numberOfCharsPerColumn = getNumberOfCharsPerColumn();
int numberOfChars = numberOfCharsPerRow * numberOfCharsPerColumn;
for (int i = numberOfChars - 1; i >= 0; --i) {
if (i + numberOfCharsPerRow < numberOfChars) {
if (path[i] == 255) {
// This means char was just set
// Initialize the next row at this X
// position
path[i + numberOfCharsPerRow] = 255;
data[i + numberOfCharsPerRow] = getChar();
}
}
// path[i] > 64 means if this char Green component > 25%
if (path[i] > 64 && random.nextFloat() < flipRate) {
data[i] = getChar();
}
// Decrement the char Green component
if (path[i] > fadeTime) {
path[i] -= fadeTime;
} else {
path[i] = 0;
}
// First row
// Start doing stuff only if the Green component > 40%
if (i < numberOfCharsPerRow && path[i] <= fillStart) {
if (random.nextFloat() < fillRate) {
path[i] = 255;
data[i] = getChar();
}
}
}
lastTime = now;
}
@Override
public void start(Stage stage) throws Exception {
this.matrixStage = stage;
matrixStage.setTitle("CDL Matrix");
Group root = new Group();
Scene scene = new Scene(root, 1024, 768);
scene.addEventHandler(KeyEvent.KEY_PRESSED,
new EventHandler<KeyEvent>() {
@Override
// F key for full screen ;)
public void handle(KeyEvent keyEvent) {
if (keyEvent.getCode() == KeyCode.F) {
matrixStage.setFullScreen(!matrixStage
.isFullScreen());
}
// ctrl + Q = exit
if (keyEvent.isControlDown()
&& keyEvent.getCode() == KeyCode.Q) {
matrixStage.close();
}
}
});
Canvas canvas = new Canvas();
canvas.widthProperty().bind(matrixStage.widthProperty());
canvas.heightProperty().bind(matrixStage.heightProperty());
final GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFont(font);
// Effect glow = new Glow(1.0); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// gc.setEffect(glow); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
new AnimationTimer() {
@Override
public void handle(long now) {
update(now);
gc.clearRect(0, 0, matrixStage.getWidth(),
matrixStage.getHeight());
gc.setFill(Color.rgb(0, 1, 0));
gc.fillRect(0, 0, matrixStage.getWidth(),
matrixStage.getHeight());
int y = 0;
int numberOfCharsPerRow = getNumberOfCharsPerRow();
int numberOfCharsPerColumn = getNumberOfCharsPerColumn();
// Colors
for (int i = 0; i < numberOfCharsPerRow
* numberOfCharsPerColumn; ++i) {
gc.setFill(Color.rgb(0, path[i], 0));
String text = String.valueOf(data[i]);
gc.fillText(text, (i % numberOfCharsPerRow) * 12 + 1,
y + 13);
if (i % numberOfCharsPerRow == numberOfCharsPerRow - 1) {
y += 12;
}
}
}
}.start();
root.getChildren().add(canvas);
matrixStage.setScene(scene);
matrixStage.show();
}
}
最佳答案
将发光应用到 Canvas
节点而不是GraphicsContext
。
动画将以正常速度而不是幻灯片播放速度发生。
更改:
gc.setEffect(glow);
致:
canvas.setEffect(glow);
JavaFX 的内部实现中一定有某些东西会导致应用效果,例如 Glow
到 GraphicsContext
而不是 Node
的效率要低几个数量级。您可能想在 JavaFX issue tracker 中提交问题让开发人员调查它。
测试环境:Java 8u40、OS X 10.9
关于javafx Glow 粉碎动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29019024/
我有一个菜单,包含几个链接。我希望这些链接在悬停时在背景中产生发光效果。 我几乎已经在链接上使用 css transition、box-shadow 和较浅的背景色。 问题是过渡效果会影响框阴影,所以
我刚刚开始编码和学习 javafx 并正在做一个简单的项目,我的问题是在我的图形上下文中添加发光效果后,动画速度急剧减慢。 /** * JavaFX rocks ;) */ public clas
我正在寻找一篇文章或教程来解释如何在计算机程序的图形输出中绘制带有( NEON )发光效果的原始形状(主要是简单的线条)。我不想做一些复杂的事情,比如现代的第一个警察射手或类似的东西。我更多的是在寻找
在 map 应用中,当您按下左下角的跟踪按钮时,它会发光,表明已按下。这使得它的行为就像一个单选按钮,一旦你移动 map 它就会不发光。有没有一种简单的方法可以让按钮进入按下状态? 最佳答案 我相信您
我想使用 this jquery glow plugin在我的页面上。 (DEMO) 我希望我的文本每 4 秒闪烁一次。我写了这段代码,但它不起作用。 $(document).ready(functi
今天开始开一期语音合成经典论文的翻译 Glow-TTS:通过单调对齐实现文本到语音的生成流 摘要: 最近,文本到语音(Text-to-Speech,TTS)模型,如FastSpee
我想在 Silverlight 中的文本块上创建外发光(或光晕)效果。 (对于 PS3 用户,类似于该系统上菜单文本周围的发光)。 我似乎有在其他形状(例如矩形)上进行内部和外部发光的示例,但这不会转
我有类似以下内容: 我想在其周围创建白色光芒。 有什么方法可以在 svg 中做到这一点吗?我环顾四周,我能找到的只是“阴影”,这并不是我真正想要的,因为我想要在矩形的所有四个边周围有一个
我正在尝试为我的应用制作具有“发光”效果的矢量图像(更像这样: ) 我制作了我的矢量: 在 Inkscape 中通过复制、将选择移动到底部并增加模糊度。我使用此工具将此 .svg 文件转换为 xml(
我有一些 css,当悬停在元素及其下方的链接上时,它会逐渐改变元素的背景颜色。 它在 Chrome 和 IE9+ 中完美运行,但在 FF 中它仅适用于您悬停的元素,它会立即更改下方元素的颜色 EXAM
您好,我正在设计一个网站,但在我的 css 上遇到了麻烦,我对这个 css 有点陌生,我为输入文本制定的 css 规则在我的文本区域无法正常工作,这有点奇怪,这是我的CSS input[type="t
我的页面中显示了 3 种不同的产品。每个产品都应该有不同的发光颜色。我使用的代码如下 $('.yellow').on('mouseenter', function () {
我有如下内容: 我想围绕它创建一个白光。 有什么方法可以在 svg 中做到这一点。我环顾四周,我能找到的只是“阴影”,这并不是我真正想要的,因为我想要在矩形的所有四个边周围都有一个阴影(
因此,我试图让我的导航箭头在悬停时“变亮”。图像本身有两种“状态”,一种被点亮,一种不被点亮。当前始终处于事件状态的是未点亮的,当它们悬停时,我在某处看到了一些关于改变图像位置的东西(发光的在 .pn
我试图在 IE9 中的文本后面放置阴影。因为 IE 很烂我已经在 IE7 和 8 中使用滤镜发光来完成效果。 我做了一些研究,发现 IE9 不再支持滤镜发光,也不支持 CSS3 属性文本阴影(为什么是
我在 MainMenu.xib 中有一个 NSText 字段,并且我有一个操作集来验证它的电子邮件地址。我希望 NSTexFields 边框颜色(蓝色发光)在我的操作返回“否”时为红色,在操作返回"i
有谁知道如何在 THREEJS 中的平面图元(planemesh?/mesh)上发光?我用谷歌搜索并找到了立方体和球体的发光,但这些更像是将对象/网格封装在另一个具有透明 Material 的对象中,
我正在尝试使用 CSS 为整个页面添加内发光。 CSS: body { margin: 0; padding: 0; border: 0; width: 100%;
我最近安装了 DevExtreme(来自 Dev Express 网站),因为我正在寻找一种方法来为多个移动设备创建单一解决方案(该软件允许这样做)。创建了一个“基本”Typescript 元素后,我
谁能比较一下 JQuery 和 BBC 的 Glow JavaScript 库? 最佳答案 BBC 的 Glow JavaScript 库刚刚发布。 BBC 以外的人对此还没有太多经验。 有一个 Aj
我是一名优秀的程序员,十分优秀!