Вот пример использования контроллера, введенного Guice.
/**
* Loads a FXML file and injects its controller from the given Guice {@code Provider}
*/
public abstract class GuiceFxmlLoader {
public GuiceFxmlLoader(Stage stage, Provider<?> provider) {
mStage = Objects.requireNonNull(stage);
mProvider = Objects.requireNonNull(provider);
}
/**
* @return the FXML file name
*/
public abstract String getFileName();
/**
* Load FXML, set its controller with given {@code Provider}, and add it to {@code Stage}.
*/
public void loadView() {
try {
FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource(getFileName()));
loader.setControllerFactory(p -> mProvider.get());
Node view = loader.load();
setViewInStage(view);
}
catch (IOException ex) {
LOGGER.error("Failed to load FXML: " + getFileName(), ex);
}
}
private void setViewInStage(Node view) {
BorderPane pane = (BorderPane)mStage.getScene().getRoot();
pane.setCenter(view);
}
private static final Logger LOGGER = Logger.getLogger(GuiceFxmlLoader.class);
private final Stage mStage;
private final Provider<?> mProvider;
}
Вот конкретная реализация загрузчика:
public class ConcreteViewLoader extends GuiceFxmlLoader {
@Inject
public ConcreteViewLoader(Stage stage, Provider<MyController> provider) {
super(stage, provider);
}
@Override
public String getFileName() {
return "my_view.fxml";
}
}
Обратите внимание, что этот пример загружает представление в центр BoarderPane, который является корнем сцены в рабочей области. Это не относится к примеру (деталь реализации моего конкретного варианта использования), но решил оставить его, поскольку некоторые из них могут оказаться полезными.
На Вашем Mac перейдите к Установкам системы> Звук> Звуковые эффекты и затем снимите флажок и перепроверьте "Звуковые эффекты пользовательского интерфейса игры".
необходимо повторно активировать системные звуки, видеть конец этот страница.
OpenAL, не работающий над средством моделирования, был зафиксирован с 2,1 SDK. Удостоверьтесь Активный SDK и , Активный Исполняемый файл установлен на 2,1.
Между прочим, удостоверьтесь, что Вы используете последнюю версию CrashLanding (v1.8). Некоторые противные утечки в SoundEngine были недавно зафиксированы.
Я нашел, что звук очень непоследователен в средстве моделирования (2,1 SDK). Иногда это работает, иногда это не делает. Даже когда это действительно работает, это обычно очень изменчиво и искажено (при игре звуковых файлов, таких как mp3).
Несколько вещей помнить:
AudioSessionInitialize
, как только Ваше приложение заканчивает запускаться kAudioSessionProperty_AudioCategory
свойство для сессии через AudioSessionSetProperty
(со значением такой как kAudioSessionCategory_MediaPlayback
) AudioSessionSetActive(YES)
, Конечно, когда все остальное перестало работать, просто выполните его на своих аппаратных средствах!
РЕДАКТИРОВАНИЕ: Теперь, когда 2,2 SDK были выпущены, у меня не было проблем со звуком в средстве моделирования. Они, должно быть, исправили ошибки! Я настоятельно рекомендую, чтобы Вы обновили до 2,2 SDK.
Я столкнулся с этой проблемой после обновления OSX10.5.7 до 10.6.2
И я внес следующие изменения, чтобы симулятор снова запел: Перейдите в «Приложения / Утилиты» и запустите «Настройка Audio MIDI», затем измените формат midi с 48000 на 44100.
если повторная активация системных звуков не помогла, попробуйте следующее: запустите audio-midi-setup, затем настройте ваш "встроенный выход" на использование 44.100Hz, 2 канала, 24 бита. (из http://www.cocos2d-iphone.org/forum/topic/4159)
почему-то через несколько дней мой симулятор iphone теперь хочет 48.000Hz, 2 канала, 24 бита. просто поиграйте с ним немного и имейте в виду, что он может меняться случайным образом при подключении наушников, переходе в режим ожидания, перезагрузке и т.д.
и вот еще совет не по теме: когда вы подключаете наушники к iphone/ipad, размер буфера может удвоиться (например, с 512 байт до 1024 байт), убедитесь, что вы не полагаетесь на запрашиваемый размер буфера!
У меня не было звука в симуляторе, поэтому я протестировал его с помощью мобильного сафари и попытался воспроизвести mp3: Нет звука!
Все приведенные выше советы не помогли. В конце концов, я сменил источник INPUT с виртуального устройства Soundflower на Line-In, и симулятор заработал!
Итак, даже если приложение не использовало ввод, со Soundflower оно не работало.