Данным текст представляет собой перевод исходного текста на русский язык:
Данный проект является результатом переноса и разработки проекта DanmakuFlameMaster с открытым исходным кодом, который был адаптирован для HarmonyOS. Исходный проект можно отследить по тегам и адресу GitHub (https://github.com/bilibili/DanmakuFlameMaster). Подробное описание проекта было опубликовано в публичном аккаунте, доступ к которому можно получить через веб-сайт ( https://harmonyos.51cto.com/posts/3261).
Проект представляет собой:
Технические характеристики:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
}
Если не удаётся запустить проект, удалите файлы .gradle, .idea, build, gradle и build.gradle и создайте новый проект на основе вашей версии. Скопируйте соответствующие файлы из нового проекта в корневой каталог.
<master.flame.danmaku.ui.widget.DanmakuView
ohos:id="$+id:sv_danmaku"
ohos:width="match_parent"
ohos:height="match_parent" />
private BaseDanmakuParser createParser(InputStream stream) {
if (stream == null) {
return new BaseDanmakuParser() {
@Override
protected Danmakus parse() {
return new Danmakus();
}
};
}
ILoader loader = DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_BILI);
try {
loader.load(stream);
} catch (IllegalDataException e) {
e.printStackTrace();
}
BaseDanmakuParser parser = new BiliDanmukuParser();
IDataSource<?> dataSource = loader.getDataSource();
parser.load(dataSource);
return parser;
}
Здесь данные загружаются в анализатор с помощью baseDanmakuParser.load(dataSource), а XML-анализ выполняется с помощью DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_BILI)
, а JSON-анализ — с помощью DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_ACFUN)
.
//Установите связанные обратные вызовы оверлея DanmakuView
mDanmakuView.setCallback(new master.flame.danmaku.controller.DrawHandler.Callback() {
@Override
public void updateTimer(DanmakuTimer timer) {
}
@Override
public void drawingFinished() {
}
@Override
public void danmakuShown(BaseDanmaku danmaku) {
}
@Override
prepared() {
mDanmakuView.start();
}
});
mDanmakuView.prepare(mParser, mContext);
mDanmakuView.showFPS(true);
mDanmakuView.enableDanmakuDrawingCache(true);
BaseDanmaku danmaku = mContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL);
if (danmaku == null || mDanmakuView == null) {
return;
}
danmaku.text = "Это вы сами отправили" + System.nanoTime();
danmaku.padding = 5;
danmaku.priority = 0; // Может быть отфильтровано и скрыто различными фильтрами
danmaku.isLive = islive;
danmaku.setTime(mDanmakuView.getCurrentTime() + 1200);
danmaku.textSize = 25f * (mParser.getDisplayer().getDensity() - 0.6f);
danmaku.textColor = Color.RED.getValue();
danmaku.textShadowColor = Color.WHITE.getValue();
danmaku.borderColor = Color.GREEN.getValue();
mDanmakuView.addDanmaku(danmaku);
mDanmakuView.hide()
.mDanmakuView.show()
.mDanmakuView.pause()
.mDanmakuView.resume()
.Boolean b = (Boolean) mBtnSendDanmakus.getTag(); ```
timer.cancel();
if (b == null || !b) {
mBtnSendDanmakus.setText("取消定时");
timer = new Timer();
timer.schedule(new AsyncAddTask(), 0, 1000);
mBtnSendDanmakus.setTag(true);
} else {
mBtnSendDanmakus.setText("定时发送");
mBtnSendDanmakus.setTag(false);
}
Timer timer = new Timer();
class AsyncAddTask extends TimerTask {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
addDanmaku(true);
SystemClock.sleep(20);
}
}
};
DanmakuFlameMaster_ohos лицензирован под Apache License, version 2.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )