Вставить механизм JavaScript в приложение iOS
Интересно, успешно ли кто-то портировал движок/интерпретатор javascript для iOS. Я пишу iPhone-игру, в которой я бы хотел использовать Javascript как язык сценариев высокого уровня (AI, игровой процесс и т.д.), Но для этого мне нужно скомпилировать JS-движок в статическую библиотеку и связать ее с моя цель-программа для iPhone OS. Есть какой-то кандидатский JS-движок, на который я смотрю, но я не мог найти успешных дел для этого.
Вот двигатель js, который я надеялся использовать для iOS
- javascript engine google V8
- mozilla SpiderMonkey
Альтернативой является использование интерфейса обратного вызова UIWebView's
Javascript, но для этого требуется загрузить весь UIWebView
в память, и я слышал, что он обычно медленный по производительности.
Цените, если у кого-то был подобный опыт, чтобы сделать это или знать какие-либо ссылки для этого!
[ОБНОВЛЕНО], как сказал Костис, Apple внесла JavascriptCore в WWDC 2013
Ответы
Ответ 1
Для будущих зрителей теперь есть фреймворк JavaScriptCore, представленный в новом iOS 7. Он делает магию! Обертка, разворачивание значений с/на JS/ Objective-C, вызывающие функции, обратные вызовы, все!
К сожалению, на данный момент документация очень плохая. Вы можете найти презентацию из события WWDC 2013 и некоторую дополнительную информацию в файлах заголовков (cmd + щелкните по имени файла заголовка в Xcode). Есть также несколько учебников по интернетам, которые просто копируют то, что делает парень в презентации WWDC.
Я использовал его для одного из моих проектов, он действительно мощный. Единственное, что мне не понравилось, это то, что он передавал объекты из JS в ObjC по значению, т.е. Ссылка была потеряна. Возможно, это было обходным путем, но я не смог найти ничего без надлежащей документации.
Надеюсь, это поможет кому-то:)
Ответ 2
Есть два проекта, которые могут вас заинтересовать:
Абсолютно возможно создать и загрузить движок JavaScript с вашим приложением iOS, см. http://www.phoboslab.org/log/2011/04/ios-and-javascript-for-real-this-time. Титан тоже делает это: https://github.com/appcelerator/webkit_titanium/tree/master/Source/JavaScriptCore.
Также см. http://www.phoboslab.org/log/2011/06/javascriptcore-project-files-for-ios.
Я также сделал небольшое приложение, в котором показано, как использовать АО на iOS: https://github.com/jfahrenkrug/AddressBookSpy
Enjoy.
Ответ 3
Взгляните на проект с открытым исходным кодом Ejectastrong > , который включает JavaScriptCore. Он предоставляет API-интерфейс холста HTML5 и использует OpenGL и OpenAL.
Ответ 4
Если вы в конечном итоге захотите перенести игру на что-то другое, кроме iOS (или у вас есть другие причины, чтобы избежать использования фирменных интерфейсов Apple), вы можете использовать MuJS. Это небольшая библиотека, предоставляющая переводчик JavaScript, который легко вставлять и расширять.