我不知道 PhpStorm 中的自动完成功能。
有一次,JavaScript 的自动完成停止工作。
也就是说,我开始输入 alert 命令,出现了一个可能的选项列表,但 alert 不在其中。
当您输入例如提示时相同。
如果您手动输入到末尾并放入方括号,则会出现一个提示应该是哪个参数。
我有一个存储音频标题的集合
songs = new ArrayList<>();
songs.add("song_1.ogg");
songs.add("song_2.ogg");
songs.add("song_3.ogg");
songs.add("song_4.ogg");
songs.add("song_5.ogg");
songs.add("song_6.ogg");
有一种方法可以根据传递的值播放音频。
private void playSong(int i) {
String mSong = songs.get(i);
try {
AssetFileDescriptor afd = this.getAssets().openFd("sounds/songs/" + mSong);
mp = new MediaPlayer();
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.setLooping(false);
mp.prepare();
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
}
});
} catch (IOException ex) {
ex.printStackTrace();
}
}
有一个按钮,单击它您需要像这样播放音频:按下一次开始播放 song_1.ogg 集合中的音频,第二次按下第一个停止播放音频 song_2.ogg,等等。到音频 song_6.ogg。如果再次单击,则再次播放音频 song_1.ogg 等。
如何实施?简单说一下逻辑。然后我这样做了,如果我多次按下按钮,就会开始为我播放几个音频
柜台
private int counter = 0;
案例块
case R.id.btnMusic:
if (counter == 0) {
play(0);
} else if (counter == 1) {
mp.release();
play(1);
} else if (counter == 2) {
mp.release();
play(2);
} else if (counter == 3) {
mp.release();
play(3);
} else if (counter == 4) {
mp.release();
play(4);
} else if (counter == 5) {
mp.release();
play(5);
}
break;
方法本身
private void play(int i) {
counter = i;
String mSong = songs.get(counter);
try {
AssetFileDescriptor afd = this.getAssets().openFd("sounds/songs/" + mSong);
mp = new MediaPlayer();
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.setLooping(false);
mp.prepare();
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
}
});
} catch (IOException ex) {
ex.printStackTrace();
}
}
你好!
有2个文件:
嵌套.cs:
namespace Demo { namespace NestingNS { class Nesting { } } }无嵌套.cs
namespace Demo.NoNestingNS { class NoNesting { } }
在第一个文件中,命名空间相互嵌套,在第二个文件中,命名空间有一个复合标识符(如果可以这样称呼的话)。
问题 1:这些声明(类名和名称空间除外)之间有什么区别?还是第二个案例是第一个案例中展开的某种语法糖?
问题 2:什么时候使用第一个声明更好,什么时候使用第二个声明更好?
我用SpriteKit它一切都很好,如果你关掉它显示几乎稳定的 60fps 的声音。但是,一旦您打开声音,声音播放过程中就会开始出现令人不快的 2-3-4-5 帧缩减,这不会特别破坏任何东西,但同时会产生令人不快的微冻结,您会觉得没有足够的平滑度。
其实问题是:如何在iOS/SpriteKit不损失fps的情况下输出声音?
SKAudioNode最初,我以前不玩dispatch,而且亏损很大,然后我把它改成了这样:
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
SKAudioNode *newAudio = [[SKAudioNode alloc] initWithFileNamed:nameSound];
[newAudio runAction:[SKAction changeVolumeTo:1.0 duration:0]];
newAudio.autoplayLooped = false;
dispatch_async(dispatch_get_main_queue(), ^{
[scene addChild:newAudio];
[newAudio runAction:[SKAction play]];
});
});
进行此更改后,它变得好多了,但是,正如我上面所写的,仍然有一些我想摆脱的令人不快的回撤。如果你完全删除声音的播放,那么稳定的 60fps。
我也尝试通过 播放声音AVAudioPlayer,但结果比使用 更糟糕SKAudioNode,缩减甚至更大。
有一个布局的例子。调整窗口大小时,一切如常,<a>标签的宽度发生变化,每行的数量也发生变化。
但是,如果<a>最后一行中的元素少于前面几行中的元素,那么这些元素将被拉伸。
是否可以使最后一行的宽度与<a>前几行的元素相匹配。
PS 为了清楚起见。现在,就像在红色方块上,但我想在绿色方块上
PSS 在 JS 的帮助下,我知道该怎么做,我对 CSS 很感兴趣。
B.addEventListener("click", add);
C.addEventListener("click", take);
function add() {
A.style.width = A.offsetWidth + 50 + "px";
}
function take() {
A.style.width = (A.offsetWidth - 50) + "px";
}
.work {
display: flex;
min-width: 67.5em;
max-width: 96em;
min-height: 55em;
/*-----*/
font-size: 4px;
padding: 3.75em;
background-color: hsla(0, 0%, 100%, 0.7);
box-sizing: border-box;
}
.faculty {
display: block;
/*-----*/
background-color: #F0E68C;
}
.container_link {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
a {
min-width: 5em;
flex: 1;
display: block;
/*-----*/
font-size: 2.25em;
margin: 1.3em 0.5em 0;
background-color: hsla(0, 0%, 90%, 1);
text-decoration: none;
border: 1px dashed #3B8686;
padding: 0.83em;
}
<button id="B">+ Width khaki</button>
<button id="C">- Width khaki</button>
<div id="A" class="work">
<div class="faculty" id="GF">
<div class="container_link">
<a href="#">1</a>
<a href="#">2</a>
<a href="#">3</a>
<a href="#">4</a>
<a href="#">5</a>
</div>
</div>
</div>