Участник
Активность: никогда
Было бы не плохо, а даже очень полезно, если бы кто-нибудь написал пару статей про билдинг манки приложений в разные таргеты, ато беда!
Вчера накидал на манки одно приложение под андроид, скачал и распаковал все android-sdk, android-ndk, apache-ant в папочку C:\monkey_targets. Скачал и установил jdk-7u40-windows-x64. Зашел в c:\monkey_targets\android-sdk-windows\ и запустил SDK Manager.exe. К галочкам, что стоят по дефолту, добавил галочки с API13, поскольку манки хотела именно их, и заинсталил все эти пакеджи.
Дальше AVD Manager.exe, дальше New, называю наш вирт. девайс, девайс выбираю Nexus S, таргет — Android 3.2 — API Level 13, дальше жму Ок.
Дальше зашел в переменные среды и прописал там путь к JAVA_HOME.
Прописываем в MonkeyPro76d\bin\config.winnt.txt все наши пути:
ANT_PATH="${SYSTEMDRIVE}\monkey_targets\apache-ant-1.9.2"
JDK_PATH="${PROGRAMFILES}\Java\jdk1.7.0_40"
ANDROID_PATH="${SYSTEMDRIVE}\monkey_targets\android-sdk-windows"
ANDROID_NDK_PATH="${SYSTEMDRIVE}\monkey_targets\android-ndk-r9"
Вроде все… идем в TED и открываем наш проджект, выставляем таргет андроид/релиз.
Нажимаю кнопку Build и тут начинается самое интересное… проект экспортировался (создалась папка андроид в папке билд папки проекта, там внутри куча папок и файлов в том числе и апк-шки), но что это? манки пытается заинсталить проект на устройство
хотя я нажимал Билд, не Билд/Ран, а просто Билд, но почему???
Ну да ладно, ждем..., ждем..., ждем…
Да сколько можно ждать? Куда он там пытается заинсталлить эту апк-шку, при этом виртуальный девайс который мы создали двумя десятками строк выше не запускается. Как сделать чтоб манки инсталлил проект на созданный нами вирт. девайс?
Короче нам ничего не остается как нажать Kill и этим остановить процесс инсталляции. И даже после килла я не могу запустить Билдинг поновой, поскольку пишет что файлы заблокированны другим процессом, ждать бесполезно — перегружаем компьютер. Почему так и как это побороть?
Чо делать — беру файлик myapp.build\android\bin\MonkeyGame-debug.apk, и ставлю эту апк-шку на планшетку — вроде все работает.
Вконце еще пару интересующих меня вопросов:
Буду рад не только ответам но и ссылка по данной теме и не только по android.
UPDATE
И что это за куча апк-шек?:
Как в приложении сделать ссылку, чтоб по клику открывался браузер с нужной страничкой? Понятно что саму ссылку можно сделать кнопкой, но как запустить при этом браузер с нужным линком — подскажите.
Уважаемые знатоки, как скачать и отобразить картинку с сайта?
Есть спрайтщит (картинка с кадрами анимации), делаем LoadImage и:
1-й вариант — DrawImageRect
2-й вариант — GrabImage и DrawImage
какой из вариантов лучше и почему? Какова производительность обоих вариантов?
Код:
Fish.monkey:
Import mojo
Class Fish
End
main.monkey:
Import Fish
Class MyApp Extends App
Field fish1:Fish
End
Результат «Type 'Fish' not found» и правильно ли я понимаю что обезьяна не видит класс имя которого совпадает с именем модуля?
Чего же все так замороченно :(
Итак код:
Class Class1
Method New()
Print("New()")
End
Method New(x:Float, y:Float)
Print("New(x:Float, y:Float)")
End
End
Class Class2 Extends Class1
End
Class TestApp Extends App
Field class2Inst:Class2
Method OnCreate:Int()
fish1 = New Fish(10.0, 10.0)
SetUpdateRate(60)
Return 0
End
...
End
Результат:
Хотя если перенести оба метода New в Class2 то все отработает как надо:
New(x:Float, y:Float)
И еще если перенести только метод New(x:Float, y:Float) в Class2, а New() оставить в Class1 — результат будет следующим:
New()
New(x:Float, y:Float)
Поясните пожалуйста почему так происходит и как с этим бороться?
Function LoadImage : Image ( path:String, frameCount:Int=1, flags:Int=image.defaultflags )
Т.к не силен в английской, может кто расскажет на простом русском на что влияет параметр flags?
В Image определены следующие возможные значения:
Flags Meaning
Image.MidHandle The image should be automatically handled by its centre once created.
Image.XPadding Each image frame includes a one pixel padding border to the left and to the right.
Image.YPadding Each image frame includes a one pixel padding border above and below.
Image.XYPadding Indicates both XPadding and YPadding.
но для чего они и как их применяют я тоже не понял.
В справке про SetBlend написано:
Function SetBlend: Int ( blend:Int )
Sets the current blending mode.The current blending mode affects all drawing commands except for Cls.
The blend parameter can be one of the following:
Blend Description
AlphaBlend Rendering operations are alpha blended with existing graphics
AdditiveBlend Rendering operations are additively blended with existing graphics
и больше ничего… Отсюда возникает вопрос как им пользоваться? Как сделать Blend.OVERLAY или Blend.MULTIPLY или любой другой вид наложения?
Что такое AlphaBlend и AdditiveBlend? И как я понимаю никакого наложения с Cls не происходит?
Есть код:
Strict
Import mojo
Function Main:Int ()
New TestApp1()
New TestApp2()
Return 0
End
Class TestApp1 Extends App
Method OnCreate:Int ()
SetUpdateRate( 3 )
Return 0
End
Method OnUpdate:Int ()
Print("TestApp1")
Return 0
End
Method OnRender:Int ()
Cls()
Return 0
End
End
Class TestApp2 Extends App
Method OnCreate:Int ()
SetUpdateRate( 3 )
Return 0
End
Method OnUpdate:Int ()
Print("TestApp2")
Return 0
End
Method OnRender:Int ()
Cls()
Return 0
End
End
Результат такой:
Почему TestApp1->OnUpdate не отрабатывает?
По идее должны поочередно отрабатывать TestApp1->OnUpdate и TestApp2->OnUpdate. Нет? Почему?
Научите, кто знает, как использовать все это хозяйство в виде GetMatrix, SetMatrix, PopMatrix, PushMatrix и Transform — последовательность выполнения данных команд и вообще суть. Если можно в виде примера покажите как повернуть объект относительно заданной точки.