HIDE – GRADLE

Pra auxiliar no desenvolvimento tenho usado Gradle
E pra ‘codar’ em Haxe tenho testado HIDE

Só resolvi juntar as duas coisas! (Y)

 

Para funcionar um arquivo build.gradle tem que estar na raiz do projeto, ou,
dentro da pasta gradle também na raiz do projeto
(No futuro isso sera configurável)

hide_haxeide_tool_grade_1

Quando tudo estiver configurado aparecera no ‘menu’ a opção Gradle

hide_haxeide_tool_grade_2

Agora…E só usar! \o/

hide_haxeide_tool_grade_3

 

Assim não estou tendo que sair de uma janela pra outra pra ficar rodando minhas tasks =)

Também comecei a escrever um GradlePlugin para controlar as libs do projeto Haxe

Quando tudo estiver pronto eu posto mais..

 

HAXE – HIDE – FLAMBE

Ha algum tempo venho acompanhado HIDE(HaxeIDE), onde, parece que seus idealizadores tem ótimas referencias
Porem, quando fui testar com Flambe, outra ferramenta que estou a muito tempo querendo testar, percebi de cara que HIDE não facilitava as coisas =/
mas pra OpenFL tinha >.<, enfim, fui no Flambe google group para pedir uma ajuda. Pra nao ter que esperar muito pedi ajuda tambem no git do HIDE, assim como no grupo Flambe, tive uma resposta rápida e muito incentivadora.
“Perhaps you could try to download source of HIDE compile and run it, if you haven’t”

Em outras palavra, pega essa porra e resolva!!! =D
Então foi isso!

 

 

Inicialize HIDE – haxelib run hide –

hide_flambe_1

hide_flambe_1

 

 

 

 

 

 

 

 

Veja que temos a opção Flambe

hide_flambe_2

hide_flambe_2

 

 

 

 

 

 

 

 

Eu gostaria de integrar a ~pagina 2~ com o flambe.yaml, mas ainda não foi possível

hide_flambe_3

hide_flambe_3

 

 

 

 

 

 

 

 

Voilà! Com – flambe new – eu gero um novo projeto

hide_flambe_4

hide_flambe_4

 

 

 

 

 

 

 

 

Coloquei um menu para as opções que Flambe oferece

hide_flambe_5

hide_flambe_5

 

 

 

 

 

 

 

 

Executei o – build –

hide_flambe_6

hide_flambe_6

 

 

 

 

 

 

 

 

Executei o – run – Deu erro porque, em Flambe, temos que inicializar o – server – primeiro

hide_flambe_7

hide_flambe_7

 

 

 

 

 

 

 

 

Depois de inicializar o – server – (opção que também esta no menu)

hide_flambe_8

hide_flambe_8

 

 

 

 

 

 

 

 

E…pronto! Rodando!

hide_flambe_9

hide_flambe_9

 

 

 

 

 

 

 

 

 

– HAXE – http://haxe.org/

– HIDE – https://github.com/HaxeIDE/HIDE

– MY FORK – https://github.com/espigah/HIDE

– FLAMBE – https://github.com/aduros/flambe

 

Almofadas personalizadas

https://www.facebook.com/fontesdasalmofadas

Almofadas de 35 cm personalizadas com seu personagem favorito, lindinhas e fofinhas a partir de R$ 35,00 reais cada. Na compra do par ganhe desconto! Feito por encomenda do personagem que preferir 😉 jessicafontes596@hotmail.com (Assunto:ALMOFADAS)




Unity3D : Attribute

A muito tempo eu descobri o poder das MetaTag no actionscript e das Annotation no Java
(falei sobre aqui -> https://fabriciodezain.wordpress.com/2013/09/30/as3metatagcustom-javaannotation/)

Agora irei colocar aqui a magica acontecendo no c# / Unity3D.
Não foi muito facil encontrar algo no iniciao, mas com a insistência o google cedeu;P
Basicamente usei como gui esses dois links:
http://www.codeproject.com/Articles/2933/Attributes-in-C
http://www.tutorialspoint.com/csharp/csharp_attributes.htm

No inicio, a coisa mais difícil de entrar na cachola foi saber que  o c# suprimiria a parte ‘Attribute’

Onde:

[AttributeUsage(AttributeTargets.All , AllowMultiple = true)]
public class CustomAttribute : Attribute
{}

Viraria

[Custom] propriedade 

e não

[CustomAttribute] propriedade

O outro pulo do gato é saber como funciona ‘reflection’ no c#…
Não e difícil, mas

'propriedade.SetValue(objeto que tem a propriedade, valor, null)'

ainda parece gambiarra pra mim =/

Então…mão na massa!

Criei uma classe para ser a minha "annotation" (passo1)
using System;
namespace Annotation
{
 [AttributeUsage(AttributeTargets.All , AllowMultiple = true)]
 public class CustomAttribute : Attribute
 {
 public string Name;
 public CustomAttribute(string __name)
 {
 this.Name = __name;
 }
 }
}
Obs.: Não use 'public' na ausência de adultos

Criar uma classe onde usaremos o nosso CustomAttribute  (passo2)
public class MyTestClass
{
 [Annotation.Custom("MyTestClass")]
 public object MySystem { set; get; }
}
Criar o cara responsável pela mágica/macumba(passo3)
using System.Reflection;
using System;
namespace Annotation
{
	public class Properties
	{

		static public void Execute(object __target)
		{
			CustomAttribute customAttribute;

			Type type =  __target.GetType();

			object[] fildList = type.GetProperties();
			foreach(PropertyInfo field in fildList)
			{
				object[] attributeList = field.GetCustomAttributes(true);
				foreach (Attribute attr in attributeList)
				{
					customAttribute = attr as CustomAttribute;
					if(customAttribute == null) { continue ;}
					var a = field;
					field.SetValue(__target,customAttribute.Name,null);
				}
			}
		}
	}
}
E por último .......Fazer o teste \o/(passo4)
using UnityEngine;
using System.Collections;

public class MyBehaviour : MonoBehaviour {

 void Start ()
 {
  MyTestClass TestInstance = new MyTestClass();
  Debug.Log(TestInstance.MySystem);
  Annotation.Properties.Execute(TestInstance);
  Debug.Log(TestInstance.MySystem);
 } 

 void Update () { }
}
Enfim, de fato, não usei a unity pra muita coisa =/ #sorry 
isso porque tem um cara que vai fazer bastante coisa pra gente
e não teremos que ficar reinventando a roda. 
https://github.com/sebas77/Lightweight-IoC-Container-for-Unity3D/blob/master/README.md

Haxe || OpenFL || Flash

Motivação do post: Nos últimos anos, por motivos errôneos ou não, o SWF perdeu força no mercado. Como ainda existem muitos leigos com o poder de decisão o AIR normalmente não se torna uma opção crossplatform (isso quando quem toma as decisões sabe o que é o AIR ). E no outro lado do campo, ganhando espaço na área de games, temos a Unity3D (Eu não vou com a cara dessa ferramenta =P mas acho C# do caralho). Há alguns anos eu naveguei por esses mares(Unity3D) e  também estudei UDK para saber aonde eu iria…bom….resolvi ficar no AS3/Flash/Air/SWF =D até queeee…um cara chamado Joshua Granick apareceu com esse OpenFL \o/ Depois HAXE com OpenFL passaram a ser algo constante nas timelines da vida.Resolvi experimentar!

Objetivo: Um Jogo em 48h usando OpenFL/Haxe/HaxePunk. Claro, demorou beeeem mais do que 2 dias =/ isso porque tenho dedicado não mais que 4h semanais com esse projeto, e com alguns problemas bobos que levam o dia todo pra resolver não deu pra cumprir as 48h certinho.

Conclusão (Minha primeira visão sobre Haxe/OpenFL):
Eu ainda nao sei muito bem onde um termina e o outro começa (e se é que um precisa terminar para o outro começar) =D

HAXE: Muito bom!  Meio que uma mistura de Actionscript3 + Java + C#. (Já tive a oportunidade de ganhar dinheiro com ele \o/ Tem futuro hehe)

OpenFL: Mesmo com o suporte de boas ferramentas eu senti bastante dificuldade com o workflow no início, mas OpenFL está melhorado rapidamente. Entretanto….nunca é tão magico quanto parece =/ os builds para as N plataformas disponíveis parecem ter um caminho longo pela frente. Espero que um dia  OpenFl possa oferecer o mesmo produto rodando limpo em todas as plataformas.

  Colocarei aqui tudo que usei como apoio nesse projeto:

Instalações:

FlashDevlop ou  Sublime AndoidSDK Ant OpenFl (Haxe e NME)

  Links:

http://www.gamefromscratch.com/post/2013/04/24/Input-in-Haxe-and-NME.aspx
Aborda: HAXE TouchEvent

http://www.willhawthorne.com/tutorials/haxe/haxeMouseButton.php
Aborda: Uma forma mais ousada de criar botoes

http://haxepunk.com/documentation/tutorials/getting-started/
Aborda: Pontape inicial com HaxePunk

http://www.openfl.org/documentation/setup/install-openfl/
Aborda: Pontape inicial com OpenFL

http://stackoverflow.com/questions/19760847/how-to-get-touchevent-on-windows-desktop-for-openfl-app
Aborda: Mais sobre TouchEvent

http://stackoverflow.com/questions/21128883/how-do-you-clear-this-error-with-using-haxepunk-in-flashdevelop
Aborda: Problemas com o mouse (usando HaxePunk)

http://www.youtube.com/watch?v=HVysAukOpCA
Aborda: Como usar o emulador (Que é uma bosta >.<)

https://groups.google.com/forum/#!topic/haxeflixel/CZIjTAYW3L8
Aborda: Mo dule UInt does not define type UInt

http://stackoverflow.com/questions/3666527/haxe-create-an-instance-of-a-class-from-a-string-name
Aborda: Type.createInstance(Para criar instancias de forma flexivel) / new Array<Class<Dynamic>>() (Um array de Class(Type))

http://stackoverflow.com/questions/18754521/android-sdk-emulator-not-supporting-opengl-es-2-0-error – debugando no device
Aborda: Problemas com o emulador

http://stackoverflow.com/questions/21408674/adb-error-device-not-found
Aborda: “erro no meu usb-drive” Tive que instalar o drive da motorola =/

Artigo(recente) que li depois de ter feito o jogo, mas pode ajudar. http://gamasutra.com/blogs/TalhaKaya/20140407/214965/OpenFL__Haxe_A_Bumpy_Start.php
Aborda: Erro com instalacao do HAXE e tambem problema com a versão

Dicas HAXE:

https://github.com/jcward/HaxeSWCExample
Aborda: Como criar um SWF de uma lib usada no haxe (É bem útil para levar um funcionalidade para As3Puro)

http://haxe.org/com/ide/sublime_text http://haxe.org/com/ide

Dicas para Android:

adb e uma mao na roda. Basicamente eu uso adb coneect IP para usar os meus devices
depois fico rodando, para desinstalar o app,adb devices | tail -n +2 | cut -sf 1 | xargs -iX adb -s X uninstall espigah.app e para instalar adb devices | tail -n +2 | cut -sf 1 | xargs -iX adb -s X install ./Desktop/MyHaxePunkProject-release.apk.
No inicio eu usava adb install e adb uninstall, porem, com vários devices ele não funciona e tive que correr atras do comando certo…
Uso adb logcat para rastrear problemas no apk. Antes de usar um logcat -v eu uso sempre o logcat -c para limpar o arquivo

adb devices | tail -n +2 | cut -sf 1 | xargs -iX adb -s X uninstall espigah.app
adb devices | tail -n +2 | cut -sf 1 | xargs -iX adb -s X install ./Desktop/MyHaxePunkProject-release.apk

Para Criar uma chave para gerar o APK eu usei isso (mas acho que nem precisava)->

 keytool -genkey -v -keystore MyHaxePunkProject.keystore -alias MyHaxePunkProject -keyalg RSA -keysize 2048 -validity 10000 

Dicas OpenFL:

http://www.openfl.org/forums/
https://www.indiegogo.com/projects/cactus-ide ou
https://github.com/as3boyan/HIDE
Cactus IDE parece ser uma coisa boa que está no forno http://www.haxestudio.com/
Openfl + swf -> https://medium.com/@premith/haxe-lime-openfl-ec9c2784aaa8

Ferramentas:

http://www.gamefromscratch.com/post/2013/05/12/Choosing-a-Haxe-NME-game-engine.
Aborda: Ash Entity Framework, Awe6, Flambe, Hydras, Spur, Cocos2D, Citrux Engine, Stencyl, Firmament Game Engine , HaxePunk e HaxeFlixel

 Meu bat para iniciar os trabalhos: OpenFl_setup.bat

<pre>@echo off
set hlib=C:\haxe\Motion-Twin\Haxe\haxelib.exe
:: (ou %HAXEPATH%)
%hlib% install lime
%hlib% run lime setup
%hlib% install format
%hlib% install svg
%hlib% install format
%hlib% install haxe-ga
%hlib% install actuate
%hlib% install HaxePunk
%hlib% run HaxePunk setup lime setup windows git clone https://github.com/openfl/lime-tools
%hlib% dev lime-tools lime-tools
%hlib% install openfl lime rebuild windows lime rebuild tools lime setup android
%hlib% upgrade
pause
*Ainda falta colocar um “tracking” pra funcionar. Feito isso, eu disponibilizarei o .apk (talvez um .ipa)

SpaceCrown

SpaceCrown(beta) foi um jogo feito para participar do http://playerio.com/competitions/
Usamos: Starling + flare3D + playerIO!

Com mais tempo…eu falarei mais deste processo!

Créditos: Fabricio Gonçalves (@espigah), João Paulo(@juaumlol) e Rilton Lucena Vieira (@RiltonRamone)

http://apps.facebook.com/spacecrown/

spacecrown_facebook_battle

spacecrown_facebook_tutorial

spacecrown_facebook_garage

spacecrown_facebook_start

[AS3(MetaTag=”custom”) && JAVA@Annotation

[AS3(MetaTag=”custom”) && JAVA@Annotation
Segue a brincadeira de hoje \o/

Como agora estou programando só em JAVA
acabei esbarrando em algo muito bacana/poderoso =)
as Annotations. -> http://docs.oracle.com/javase/tutorial/java/annotations/

E….fiquei encucado com isso. -Pô, isso tem que ter em flash/actionscript 3
Es que surge…a Metatag!!!Bem de baixo no meu nariz…
Coisas corriqueiras, como: [SWF], [Bindable] e etc… Sempre estiveram lá =’/
Mas faltou uma pergunta:- COMO ISSO FUNCIONA?
Ainda não sei muito sobre, mas segue um link -> http://pierrechamberlain.ca/blog/2011/04/custom_metadata/ (2011 =/ velin, né?!)

E como isso serviu bem pra mim ->

[Find(idGrade,idSubject)]
public function findByGradeAndSubject(idGrade:int,idSubject:int):Vector.<SubjectVO> 
{			
	return Vector.<SubjectVO> (findBy(idGrade,idSubject));
}
[Find(idGrade,title)]
public function findByGradeAndTitle(idGrade:int,title:String):Vector.<SubjectVO> 
{			
	return Vector.<SubjectVO> (findBy(idGrade,title));
}
[Find(idGrade,title,idSubject)]
public function find(...args):Vector.<SubjectVO> 
{			
	return Vector.<SubjectVO> (findBy(args));
}

Na proxima eu coloco o source.rar e tudo+

%d blogueiros gostam disto: