ATENCION!! funciona con la version 2.0 PLATFORM
https://winder.github.io/ugs_website/download/
Link directo de descarga: http://bit.ly/2XANF7B
1. Conectar el pin SCL del CNC Shield a la mecha del dremel.
2. Conectar el pin GND del CNC Shield a la placa PCB
3. En el Universal Gcode Sender, enviar estos comandos:
G38.2 Z-1 F1
G92 Z 0
G00 Z0.0787
G38. Z-1 : Baja hasta encontrar el z probe
G92 Z 0 : Le indica que la posicion a la que llego (cuando hizo contacto con el Z Probe) es el cero
Z.05 : Sube el eje z (esto es para evitar que este en contacto cuando se enciende el motor del dremel)
Fuente: https://www.youtube.com/watch?v=7l1nubetkro
AWS
Guia completa para desarrollar aplicacion web sin servidor
con AWS Lambda, Amazon API Gateway, Amazon S3, Amazon DynamoDB y Amazon Cognito
https://aws.amazon.com/es/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/
DynamoDB - Version descargable (para utilizarla sin conectarse!!)
https://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html
Ejecutarla con:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb --port 8082
Para probarlo, con nodejs:
npm init
npm install aws-sdk
EJEMPLO COMPLETO CON NODEJS Y DYNAMO:
https://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.html
*** A LOS EJEMPLOS CAMBIARLE EL PUERTO A 8082 ***
---------------------------------------------------------------------------------------------------------
Consola AWS
https://us-east-2.console.aws.amazon.com/cognito/home?region=us-east-2
LUEGO DE ENTRAR A LA CONSOLA, PARA VER LO QUE TIENE HAY QUE HACER CLICK EN LAS TRES RAYITAS A LA IZQUIERDA!!
Consola LAMBDA
https://console.aws.amazon.com/lambda/home?region=us-east-1#/functions
Actividad y costos:
https://console.aws.amazon.com/billing/home?#/
Capas disponibles con filtro
https://aws.amazon.com/es/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc
Calculadora AWS:
https://calculator.aws
https://calculator.s3.amazonaws.com/index.html#key=calc-MarketingWebSite-140324
Tutoriales
Cómo crear aplicaciones web sin servidor con React y AWS Amplify
https://code.tutsplus.com/es/tutorials/how-to-build-serverless-web-applications-with-react-aws-amplify--cms-31732
Adding AWS Amplify to an Ionic 4 App
https://ionicframework.com/blog/adding-aws-amplify-to-an-ionic-4-app/
Setup amplify
https://aws-amplify.github.io/docs/js/start?platform=ionic
Building Ionic 4 apps with AWS Amplify [<==== este es el mejor!!]
OJO! en este instructivo falta instalar el cli de amplify:
npm install -g @aws-amplify/cli
https://aws-amplify.github.io/docs/js/tutorials/building-ionic-4-apps/
con AWS Lambda, Amazon API Gateway, Amazon S3, Amazon DynamoDB y Amazon Cognito
https://aws.amazon.com/es/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/
DynamoDB - Version descargable (para utilizarla sin conectarse!!)
https://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html
Ejecutarla con:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb --port 8082
Para probarlo, con nodejs:
npm init
npm install aws-sdk
EJEMPLO COMPLETO CON NODEJS Y DYNAMO:
https://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.html
*** A LOS EJEMPLOS CAMBIARLE EL PUERTO A 8082 ***
---------------------------------------------------------------------------------------------------------
Consola AWS
https://us-east-2.console.aws.amazon.com/cognito/home?region=us-east-2
LUEGO DE ENTRAR A LA CONSOLA, PARA VER LO QUE TIENE HAY QUE HACER CLICK EN LAS TRES RAYITAS A LA IZQUIERDA!!
Consola LAMBDA
https://console.aws.amazon.com/lambda/home?region=us-east-1#/functions
Actividad y costos:
https://console.aws.amazon.com/billing/home?#/
Capas disponibles con filtro
https://aws.amazon.com/es/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc
Calculadora AWS:
https://calculator.aws
https://calculator.s3.amazonaws.com/index.html#key=calc-MarketingWebSite-140324
Tutoriales
Cómo crear aplicaciones web sin servidor con React y AWS Amplify
https://code.tutsplus.com/es/tutorials/how-to-build-serverless-web-applications-with-react-aws-amplify--cms-31732
Adding AWS Amplify to an Ionic 4 App
https://ionicframework.com/blog/adding-aws-amplify-to-an-ionic-4-app/
Setup amplify
https://aws-amplify.github.io/docs/js/start?platform=ionic
Building Ionic 4 apps with AWS Amplify [<==== este es el mejor!!]
OJO! en este instructivo falta instalar el cli de amplify:
npm install -g @aws-amplify/cli
https://aws-amplify.github.io/docs/js/tutorials/building-ionic-4-apps/
Script para generar archivo sql a partir de datos de padrones urbanos dnc catastro e importarlo en PostgreSql
1. Bajar el archivo csv de padrones urbanos de:
https://catalogodatos.gub.uy/dataset/padrones-urbanos-y-rurales
2. Crear un .NET:
using System;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//PadronesUrbanos();
}
static void PadronesUrbanos()
{
var arch = @"C:\_MAPAS\_PADRONES DNC\datos-abiertos-dnc-2019-06\Padrones Urbanos.CSV";
var fila = 0;
var numero_archivo = 0;
var archOut = @"C:\temp\out\Padrones Urbanos_" + numero_archivo + ".sql";
var f = new StreamReader(arch);
var fOut = new StreamWriter(archOut);
fOut.WriteLine("DROP TABLE padrones_urbanos;");
fOut.WriteLine("CREATE TABLE padrones_urbanos (" +
"codigo_regimen VARCHAR(2), " +
"codigo_departamento VARCHAR(1), " +
"codigo_localidad VARCHAR(2), " +
"numero_padron integer, " +
"block_manzana VARCHAR(20), " +
"entrepiso_subsuelo VARCHAR(2), " +
"unidad integer, " +
"area_predio integer, " +
"area_edificada integer, " +
"valor_real_terreno integer, " +
"valor_real_mejoras integer, " +
"valor_real_total integer, " +
"valor_real_para_impuestos integer, " +
"fecha_ultima_djcu VARCHAR(10), " +
"vigencia_ultima_djcu VARCHAR(10)" +
");");
fOut.WriteLine();
while (!f.EndOfStream)
{
var linea = f.ReadLine();
fila++;
var v = linea.Split(',');
var v1 = v[0].Replace("\"", "'");
var v2 = v[1].Replace("\"", "'");
var v3 = v[2].Replace("\"", "'");
var v4 = v[3].Replace("\"", "'");
var v5 = "'" + v[4].Replace("\"", "").Replace("'", "") + "'"; ;
var v6 = v[5].Replace("\"", "'");
var v7 = v[6].Replace("\"", "'");
var v8 = v[7].Replace("\"", "'");
var v9 = v[8].Replace("\"", "'");
var v10 = v[9].Replace("\"", "'");
var v11 = v[10].Replace("\"", "'");
var v12 = v[11].Replace("\"", "'");
var v13 = v[12].Replace("\"", "'");
var v14 = "\'" + v[13] + "\'";
var v15 = "\'" + v[14] + "\'";
fOut.WriteLine("INSERT INTO padrones_urbanos (codigo_regimen, codigo_departamento, codigo_localidad, numero_padron, block_manzana, entrepiso_subsuelo, unidad, area_predio, area_edificada, valor_real_terreno, valor_real_mejoras, valor_real_total, valor_real_para_impuestos, fecha_ultima_djcu, vigencia_ultima_djcu) " +
"VALUES (" + v1 + ", " + v2 + ", " + v3 + ", " + v4 + ", " + v5 + ", " + v6 + ", " +
v7 + ", " + v8 + ", " + v9 + ", " + v10 + ", " + v11 + ", " + v12 + ", " + v13 + ", " + v14 + ", " + v15 + ");");
if (fila > 300000)
{
fila = 0;
numero_archivo++;
fOut.Close();
archOut = @"C:\temp\out\Padrones Urbanos_" + numero_archivo + ".sql";
fOut = new StreamWriter(archOut);
}
}
fOut.Close();
Console.WriteLine("fin");
Console.ReadLine();
}
}
}
https://catalogodatos.gub.uy/dataset/padrones-urbanos-y-rurales
2. Crear un .NET:
using System;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//PadronesUrbanos();
}
static void PadronesUrbanos()
{
var arch = @"C:\_MAPAS\_PADRONES DNC\datos-abiertos-dnc-2019-06\Padrones Urbanos.CSV";
var fila = 0;
var numero_archivo = 0;
var archOut = @"C:\temp\out\Padrones Urbanos_" + numero_archivo + ".sql";
var f = new StreamReader(arch);
var fOut = new StreamWriter(archOut);
fOut.WriteLine("DROP TABLE padrones_urbanos;");
fOut.WriteLine("CREATE TABLE padrones_urbanos (" +
"codigo_regimen VARCHAR(2), " +
"codigo_departamento VARCHAR(1), " +
"codigo_localidad VARCHAR(2), " +
"numero_padron integer, " +
"block_manzana VARCHAR(20), " +
"entrepiso_subsuelo VARCHAR(2), " +
"unidad integer, " +
"area_predio integer, " +
"area_edificada integer, " +
"valor_real_terreno integer, " +
"valor_real_mejoras integer, " +
"valor_real_total integer, " +
"valor_real_para_impuestos integer, " +
"fecha_ultima_djcu VARCHAR(10), " +
"vigencia_ultima_djcu VARCHAR(10)" +
");");
fOut.WriteLine();
while (!f.EndOfStream)
{
var linea = f.ReadLine();
fila++;
var v = linea.Split(',');
var v1 = v[0].Replace("\"", "'");
var v2 = v[1].Replace("\"", "'");
var v3 = v[2].Replace("\"", "'");
var v4 = v[3].Replace("\"", "'");
var v5 = "'" + v[4].Replace("\"", "").Replace("'", "") + "'"; ;
var v6 = v[5].Replace("\"", "'");
var v7 = v[6].Replace("\"", "'");
var v8 = v[7].Replace("\"", "'");
var v9 = v[8].Replace("\"", "'");
var v10 = v[9].Replace("\"", "'");
var v11 = v[10].Replace("\"", "'");
var v12 = v[11].Replace("\"", "'");
var v13 = v[12].Replace("\"", "'");
var v14 = "\'" + v[13] + "\'";
var v15 = "\'" + v[14] + "\'";
fOut.WriteLine("INSERT INTO padrones_urbanos (codigo_regimen, codigo_departamento, codigo_localidad, numero_padron, block_manzana, entrepiso_subsuelo, unidad, area_predio, area_edificada, valor_real_terreno, valor_real_mejoras, valor_real_total, valor_real_para_impuestos, fecha_ultima_djcu, vigencia_ultima_djcu) " +
"VALUES (" + v1 + ", " + v2 + ", " + v3 + ", " + v4 + ", " + v5 + ", " + v6 + ", " +
v7 + ", " + v8 + ", " + v9 + ", " + v10 + ", " + v11 + ", " + v12 + ", " + v13 + ", " + v14 + ", " + v15 + ");");
if (fila > 300000)
{
fila = 0;
numero_archivo++;
fOut.Close();
archOut = @"C:\temp\out\Padrones Urbanos_" + numero_archivo + ".sql";
fOut = new StreamWriter(archOut);
}
}
fOut.Close();
Console.WriteLine("fin");
Console.ReadLine();
}
}
}
3. Para importarlo en postgreSql:
C:\Program Files\PostgreSQL\11\bin>psql -h localhost -d catastro -U admin -v ON_ERROR_STOP=1 -f "c:\temp\Padrones Urbanos_0.sql"
(hacerlo para el 1, 2, 3, etc)
Importar SHP en PostgreSQL
1. Instalar extensiones POSTGIS (con el application stack builder de postgis):
2. Ejecutar en la base:
CREATE EXTENSION postgis;
3. Ejecutar:
C:\Program Files\PostgreSQL\11\bin>shp2pgsql -I -s 2263 "C:\_MAPAS\_CCZ\sig_comunales.shp" ccz | psql -U admin -d catastro
Usando el GUI:
C:\Program Files\PostgreSQL\11\bin\postgisgui
ejecutar shp2pgsql-gui.exe
Si da error que falta libintl-9.dll
Hacer una copia de libintl-8.dll y renombrarlo a libintl-9.dll
Si da error de encoding:
Luego al abrir el GUI, click en el boton Options... y poner LATIN1
2. Ejecutar en la base:
CREATE EXTENSION postgis;
3. Ejecutar:
C:\Program Files\PostgreSQL\11\bin>shp2pgsql -I -s 2263 "C:\_MAPAS\_CCZ\sig_comunales.shp" ccz | psql -U admin -d catastro
Usando el GUI:
C:\Program Files\PostgreSQL\11\bin\postgisgui
ejecutar shp2pgsql-gui.exe
Si da error que falta libintl-9.dll
Hacer una copia de libintl-8.dll y renombrarlo a libintl-9.dll
Si da error de encoding:
Luego al abrir el GUI, click en el boton Options... y poner LATIN1
Importar SQL en posgresql desde linea de comando
C:\Program Files\PostgreSQL\11\bin>psql -h localhost -d catastro -U admin -v ON_ERROR_STOP=1 -f "c:\temp\Padrones Urbanos.sql"
Ver mapa de edificios exportados de OSM en QGIS (OpenStreetMap) y query SQL
Referencia: https://github.com/tudelft3d/3dfier/wiki/Extracting-building-footprints-from-OpenStreetMap
1. Abrir browser en openstreetmap
2. Click en exportar
3. Seleccionar el area a exportar
4. Click en Overpass API (esto permite exportar archivos grandes)
5. El archivo exportado (map) renombrarlo a map.osm
6. Instalar QGIS (o instalar OSGeo4W, en el cual viene incluido)
7. En QGIS: Layer / Add Layer / Add Vector Layer
8. Elegir el archivo map.osm
9. Elegir multipolygons solamente
10. Luego de importar el mapa, en la ventana Layers (a la izquierda) click derecho en map_multipolygons, y en Filter definir:
"building" is not null
(esto permite que se muestren todos los edificios/casas)
Para hacer Query SQL:
Database / DB Manager
Virtual Layers / Project Layers
Database / SQL Window
select * from "map multipolygons"
where building is not null
^^^ ojo que tiene que ir con comillas y tiene un espacio luego de map!!
1. Abrir browser en openstreetmap
2. Click en exportar
3. Seleccionar el area a exportar
4. Click en Overpass API (esto permite exportar archivos grandes)
5. El archivo exportado (map) renombrarlo a map.osm
6. Instalar QGIS (o instalar OSGeo4W, en el cual viene incluido)
7. En QGIS: Layer / Add Layer / Add Vector Layer
8. Elegir el archivo map.osm
9. Elegir multipolygons solamente
10. Luego de importar el mapa, en la ventana Layers (a la izquierda) click derecho en map_multipolygons, y en Filter definir:
"building" is not null
(esto permite que se muestren todos los edificios/casas)
Para hacer Query SQL:
Database / DB Manager
Virtual Layers / Project Layers
Database / SQL Window
select * from "map multipolygons"
where building is not null
^^^ ojo que tiene que ir con comillas y tiene un espacio luego de map!!
Cargar mapa en PosgreSql
1. Bajar el dataset de
https://data.humdata.org/dataset/604b5629-756d-4979-8b6f-59d6598ccd61
Por ejemplo:
hotosm_ury_buildings_gpkg.zipzipped geopackage
https://data.humdata.org/dataset/604b5629-756d-4979-8b6f-59d6598ccd61
Por ejemplo:
hotosm_ury_buildings_gpkg.zipzipped geopackage
Geopackage, SQLite compatible
2. Instalar OSGeo4W (esto instala el ogr2ogr.exe, que es lo que permite subir el dataset a PosgreSQL)
3. Instalar PosgreSQL
4. Crear una base de datos (ej prueba2)
5. Crear un usuario y darle permisos sobre la base:
create user carlos with encrypted password 'Carlos1';grant all privileges on database prueba2 to carlos;
6. Instalar extensiones de GIS en PosgreSQL
-Abrir el PostgreSQL stack builder
-Ir a Spatial Extensions
-Marcar PostGIS
7. Crear extensiones postgis para la base de datos prueba2:
Ejecutar este query:
CREATE EXTENSION postgis;
8. Abrir la consola de OSGeo4W (OSGeo4W Shell)
ogr2ogr -f PostgreSQL "PG:dbname=prueba2 host='localhost' port='5432' user='carlos' password=Carlos" C:\_MAPAS\hotosm_ury_buildings_gpkg\hotosm_ury_buildings.gpkg -nlt PROMOTE_TO_MULTI
ATENCION: Si da un problema y pide password:
editar:
C:\Program Files\PostgreSQL\11\data\pg_hba.conf
cambiar todo lo que dice md5 por trust
(despues de ejecutar el script dejarlo con md5 de nuevo)
Could not find an NgModule. Use the skip-import option to skip importing in NgModule
No se puede cambiar de lugar el archivo app-routing.module.ts !!!
tiene que ir en src\app
Crear juego con Phaser y ejecutarlo en Android
https://gamedevacademy.org/creating-mobile-games-with-phaser-3-and-cordova/
PARA QUE FUNCIONE EN ANDROID, LA RUTA A PHASER TIENE QUE SER LOCAL!!
Ej de codigo:
<!DOCTYPE html>
<html>
<head>
<script src="./node_modules/phaser/dist/phaser.js"></script>
</head>
<body>
<script>
var config = {
type: Phaser.AUTO,
width: 400,
height: 600,
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
var bmd;
var tooltip;
var sprite;
var pelota;
var rojo_strong;
var rojo_soft;
var verde_strong;
var verde_soft;
var amarillo_strong;
var amarillo_soft;
var boton_comenzar;
//------------------
var ensecuencia = false;
var finsecuencia = false;
var ind = 0;
var vecX = new Array();
var fin = false;
var interv;
var intervInicial;
var enjuego = false;
var indclick = 0;
const TIEMPO_ON = 300;
ensecuencia = false;
habilitar(false);
//------------------
function preload ()
{
this.load.image('pelota', 'assets/pelota.png');
this.load.image('rojo_strong', 'assets/rojo_strong.png');
this.load.image('rojo_soft', 'assets/rojo_soft.png');
this.load.image('verde_strong', 'assets/verde_strong.png');
this.load.image('verde_soft', 'assets/verde_soft.png');
this.load.image('amarillo_strong', 'assets/amarillo_strong.png');
this.load.image('amarillo_soft', 'assets/amarillo_soft.png');
this.load.image('azul_strong', 'assets/azul_strong.png');
this.load.image('azul_soft', 'assets/azul_soft.png');
this.load.image('naranja_strong', 'assets/naranja_strong.png');
this.load.image('naranja_soft', 'assets/naranja_soft.png');
this.load.image('magenta_strong', 'assets/magenta_strong.png');
this.load.image('magenta_soft', 'assets/magenta_soft.png');
this.load.image('boton_comenzar', 'assets/bitmap.png');
}
function create ()
{
var xSprite = 200;
pelota = this.add.sprite(xSprite, 300, 'pelota');
rojo_soft = this.add.sprite(xSprite, 300, 'rojo_soft').setInteractive({ pixelPerfect: true });
rojo_strong = this.add.sprite(xSprite, 300, 'rojo_strong');
verde_soft = this.add.sprite(xSprite, 300, 'verde_soft').setInteractive({ pixelPerfect: true });
verde_strong = this.add.sprite(xSprite, 300, 'verde_strong');
amarillo_soft = this.add.sprite(xSprite, 300, 'amarillo_soft').setInteractive({ pixelPerfect: true });
amarillo_strong = this.add.sprite(xSprite, 300, 'amarillo_strong');
azul_soft = this.add.sprite(xSprite, 300, 'azul_soft').setInteractive({ pixelPerfect: true });
azul_strong = this.add.sprite(xSprite, 300, 'azul_strong');
naranja_soft = this.add.sprite(xSprite, 300, 'naranja_soft').setInteractive({ pixelPerfect: true });
naranja_strong = this.add.sprite(xSprite, 300, 'naranja_strong');
magenta_soft = this.add.sprite(xSprite, 300, 'magenta_soft').setInteractive({ pixelPerfect: true });
magenta_strong = this.add.sprite(xSprite, 300, 'magenta_strong');
boton_comenzar = this.add.sprite(xSprite, 378, 'boton_comenzar').setInteractive({ pixelPerfect: true });
rojo_strong.visible = false;
verde_strong.visible = false;
amarillo_strong.visible = false;
azul_strong.visible = false;
naranja_strong.visible = false;
magenta_strong.visible = false;
rojo_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('6');
rojo_strong.visible = true;
setTimeout(function() {
rojo_strong.visible = false;
}, TIEMPO_ON);
}
});
verde_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('1');
verde_strong.visible = true;
setTimeout(function() {
verde_strong.visible = false;
}, TIEMPO_ON);
}
});
amarillo_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('2');
amarillo_strong.visible = true;
setTimeout(function() {
amarillo_strong.visible = false;
}, TIEMPO_ON);
}
});
azul_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('3');
azul_strong.visible = true;
setTimeout(function() {
azul_strong.visible = false;
}, TIEMPO_ON);
}
});
naranja_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('4');
naranja_strong.visible = true;
setTimeout(function() {
naranja_strong.visible = false;
}, TIEMPO_ON);
}
});
magenta_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('5');
magenta_strong.visible = true;
setTimeout(function() {
magenta_strong.visible = false;
}, TIEMPO_ON);
}
});
boton_comenzar.on('pointerdown', function(pointer){
if (!enjuego) {
start();
}
});
}
function update ()
{
}
function comenzar() {
Math.random();
habilitar(true);
agregar();
secuenciar();
}
function start() {
Math.random();
habilitar(true);
agregar();
secuenciar();
}
function habilitar(habil) {
boton_comenzar.visible = !habil;
enjuego = habil;
}
function iluminar(color, mantener=false) {
if (mantener)
t = TIEMPO_ON * 4;
else
t = TIEMPO_ON;
if (color == 1) {
verde_strong.visible = true;
setTimeout(function() {
verde_strong.visible = false;
}, t);
}
if (color == 2) {
amarillo_strong.visible = true;
setTimeout(function() {
amarillo_strong.visible = false;
}, t);
}
if (color == 3) {
azul_strong.visible = true;
setTimeout(function() {
azul_strong.visible = false;
}, t);
}
if (color == 4) {
naranja_strong.visible = true;
setTimeout(function() {
naranja_strong.visible = false;
}, t);
}
if (color == 5) {
magenta_strong.visible = true;
setTimeout(function() {
magenta_strong.visible = false;
}, t);
}
if (color == 6) {
rojo_strong.visible = true;
setTimeout(function() {
rojo_strong.visible = false;
}, t);
}
}
function agregar() {
vecX.push(Math.floor(Math.random() * 6) + 1);
}
function secuenciar() {
iluminar(vecX[ind]);
ind++;
if (ind > vecX.length-1)
{
ensecuencia = false;
ind = 0;
return;
}
interv = setInterval(function() {
iluminar(vecX[ind]);
ind++;
if (ind > vecX.length-1)
{
clearInterval(interv);
ensecuencia = false;
ind = 0;
}
}, 1000);
}
function selecciono(numero)
{
if (!enjuego)
return;
if (vecX[indclick] == numero)
{
indclick++
if (indclick > vecX.length-1)
{
indclick = 0;
setTimeout(function() {
agregar();
secuenciar();
}, 1000);
}
}
else {
iluminar(vecX[indclick], true);
detener();
}
}
function detener() {
clearInterval(interv);
clearInterval(intervInicial);
vecX.length = 0;
ind = 0;
indclick = 0;
habilitar(false);
}
</script>
</body>
</html>
PARA QUE FUNCIONE EN ANDROID, LA RUTA A PHASER TIENE QUE SER LOCAL!!
Ej de codigo:
<!DOCTYPE html>
<html>
<head>
<script src="./node_modules/phaser/dist/phaser.js"></script>
</head>
<body>
<script>
var config = {
type: Phaser.AUTO,
width: 400,
height: 600,
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
var bmd;
var tooltip;
var sprite;
var pelota;
var rojo_strong;
var rojo_soft;
var verde_strong;
var verde_soft;
var amarillo_strong;
var amarillo_soft;
var boton_comenzar;
//------------------
var ensecuencia = false;
var finsecuencia = false;
var ind = 0;
var vecX = new Array();
var fin = false;
var interv;
var intervInicial;
var enjuego = false;
var indclick = 0;
const TIEMPO_ON = 300;
ensecuencia = false;
habilitar(false);
//------------------
function preload ()
{
this.load.image('pelota', 'assets/pelota.png');
this.load.image('rojo_strong', 'assets/rojo_strong.png');
this.load.image('rojo_soft', 'assets/rojo_soft.png');
this.load.image('verde_strong', 'assets/verde_strong.png');
this.load.image('verde_soft', 'assets/verde_soft.png');
this.load.image('amarillo_strong', 'assets/amarillo_strong.png');
this.load.image('amarillo_soft', 'assets/amarillo_soft.png');
this.load.image('azul_strong', 'assets/azul_strong.png');
this.load.image('azul_soft', 'assets/azul_soft.png');
this.load.image('naranja_strong', 'assets/naranja_strong.png');
this.load.image('naranja_soft', 'assets/naranja_soft.png');
this.load.image('magenta_strong', 'assets/magenta_strong.png');
this.load.image('magenta_soft', 'assets/magenta_soft.png');
this.load.image('boton_comenzar', 'assets/bitmap.png');
}
function create ()
{
var xSprite = 200;
pelota = this.add.sprite(xSprite, 300, 'pelota');
rojo_soft = this.add.sprite(xSprite, 300, 'rojo_soft').setInteractive({ pixelPerfect: true });
rojo_strong = this.add.sprite(xSprite, 300, 'rojo_strong');
verde_soft = this.add.sprite(xSprite, 300, 'verde_soft').setInteractive({ pixelPerfect: true });
verde_strong = this.add.sprite(xSprite, 300, 'verde_strong');
amarillo_soft = this.add.sprite(xSprite, 300, 'amarillo_soft').setInteractive({ pixelPerfect: true });
amarillo_strong = this.add.sprite(xSprite, 300, 'amarillo_strong');
azul_soft = this.add.sprite(xSprite, 300, 'azul_soft').setInteractive({ pixelPerfect: true });
azul_strong = this.add.sprite(xSprite, 300, 'azul_strong');
naranja_soft = this.add.sprite(xSprite, 300, 'naranja_soft').setInteractive({ pixelPerfect: true });
naranja_strong = this.add.sprite(xSprite, 300, 'naranja_strong');
magenta_soft = this.add.sprite(xSprite, 300, 'magenta_soft').setInteractive({ pixelPerfect: true });
magenta_strong = this.add.sprite(xSprite, 300, 'magenta_strong');
boton_comenzar = this.add.sprite(xSprite, 378, 'boton_comenzar').setInteractive({ pixelPerfect: true });
rojo_strong.visible = false;
verde_strong.visible = false;
amarillo_strong.visible = false;
azul_strong.visible = false;
naranja_strong.visible = false;
magenta_strong.visible = false;
rojo_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('6');
rojo_strong.visible = true;
setTimeout(function() {
rojo_strong.visible = false;
}, TIEMPO_ON);
}
});
verde_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('1');
verde_strong.visible = true;
setTimeout(function() {
verde_strong.visible = false;
}, TIEMPO_ON);
}
});
amarillo_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('2');
amarillo_strong.visible = true;
setTimeout(function() {
amarillo_strong.visible = false;
}, TIEMPO_ON);
}
});
azul_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('3');
azul_strong.visible = true;
setTimeout(function() {
azul_strong.visible = false;
}, TIEMPO_ON);
}
});
naranja_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('4');
naranja_strong.visible = true;
setTimeout(function() {
naranja_strong.visible = false;
}, TIEMPO_ON);
}
});
magenta_soft.on('pointerdown', function(pointer){
if (enjuego) {
selecciono('5');
magenta_strong.visible = true;
setTimeout(function() {
magenta_strong.visible = false;
}, TIEMPO_ON);
}
});
boton_comenzar.on('pointerdown', function(pointer){
if (!enjuego) {
start();
}
});
}
function update ()
{
}
function comenzar() {
Math.random();
habilitar(true);
agregar();
secuenciar();
}
function start() {
Math.random();
habilitar(true);
agregar();
secuenciar();
}
function habilitar(habil) {
boton_comenzar.visible = !habil;
enjuego = habil;
}
function iluminar(color, mantener=false) {
if (mantener)
t = TIEMPO_ON * 4;
else
t = TIEMPO_ON;
if (color == 1) {
verde_strong.visible = true;
setTimeout(function() {
verde_strong.visible = false;
}, t);
}
if (color == 2) {
amarillo_strong.visible = true;
setTimeout(function() {
amarillo_strong.visible = false;
}, t);
}
if (color == 3) {
azul_strong.visible = true;
setTimeout(function() {
azul_strong.visible = false;
}, t);
}
if (color == 4) {
naranja_strong.visible = true;
setTimeout(function() {
naranja_strong.visible = false;
}, t);
}
if (color == 5) {
magenta_strong.visible = true;
setTimeout(function() {
magenta_strong.visible = false;
}, t);
}
if (color == 6) {
rojo_strong.visible = true;
setTimeout(function() {
rojo_strong.visible = false;
}, t);
}
}
function agregar() {
vecX.push(Math.floor(Math.random() * 6) + 1);
}
function secuenciar() {
iluminar(vecX[ind]);
ind++;
if (ind > vecX.length-1)
{
ensecuencia = false;
ind = 0;
return;
}
interv = setInterval(function() {
iluminar(vecX[ind]);
ind++;
if (ind > vecX.length-1)
{
clearInterval(interv);
ensecuencia = false;
ind = 0;
}
}, 1000);
}
function selecciono(numero)
{
if (!enjuego)
return;
if (vecX[indclick] == numero)
{
indclick++
if (indclick > vecX.length-1)
{
indclick = 0;
setTimeout(function() {
agregar();
secuenciar();
}, 1000);
}
}
else {
iluminar(vecX[indclick], true);
detener();
}
}
function detener() {
clearInterval(interv);
clearInterval(intervInicial);
vecX.length = 0;
ind = 0;
indclick = 0;
habilitar(false);
}
</script>
</body>
</html>
Como hacer funcionar el emulador de Android
1. Instalar Android Studio
2. En la pantalla inicial de Android Studio, ir a Configure / AVD Manager
3. Create virtual device / Nexus 5X API 24
4. Ir al SETUP de la BIOS y activar la virtualizacion (en Hp envy, F10 cuando reinicio, luego System config / enable virtualization)
5. Para ver los emuladores instalados:
2. En la pantalla inicial de Android Studio, ir a Configure / AVD Manager
3. Create virtual device / Nexus 5X API 24
4. Ir al SETUP de la BIOS y activar la virtualizacion (en Hp envy, F10 cuando reinicio, luego System config / enable virtualization)
5. Para ver los emuladores instalados:
cd c:\Users\Carlos\AppData\Local\ Android\Sdk\tools
emulator -list-avds
Nexus_5X_API_24
6. Ir a la carpeta de la aplicacion
cordova emulate android
*** Si el emulador no arranca o dice waiting for emulator to start, ir al AVD en Android Studio, click derecho sobre el emulador y Cold Reset y Wipe Data ***
Render de videos para Whatsapp en Sony Vegas
En la pantalla del preview, en la rueda de propiedades (arriba a la izquierda) elegir:
HDV 720-25p (1280x720, 25.000fps)
o
HD 1080-50i (1920X1080, 25.000fps)
Frame rate (velocidad de fotogramas): 25.000 (PAL)
Full resolution rendering (Calidad de renderizacion...): Best
Apply / OK
File / Render
Sony AVC/MVC (*.mp4,*.m2ts,*.avc)
Internet 1280x720-30p (Si arriba elegi HDV 720)
Customize template...
Profile: Main
Frame rate: 25.000 (PAL)
Bit rate (bps): 1,000,000 <=== para achicar mas el video, bajar este número
En ficha Project: Video rendering quality: Best
Ponerle un nombre al template y guardarlo
No se instalo la aplicacion - Android
Instalar ApkEditor (version 1-9-0, la mas nueva no sirve)
https://drive.google.com/open?id=14nH68spiZNMAfadNBb7SN1xEhB9hPMvX
-Seleccionar un Archivo APK
-Edicion Rapida
Modificar el nombre de la aplicacion (ej, si es MyApp, ponerle MyAppX)
-Guardar
-DESINSTALAR LA APLICACION SI YA FUE PREVIAMENTE INSTALADA
-Instalar
https://drive.google.com/open?id=14nH68spiZNMAfadNBb7SN1xEhB9hPMvX
-Seleccionar un Archivo APK
-Edicion Rapida
Modificar el nombre de la aplicacion (ej, si es MyApp, ponerle MyAppX)
-Guardar
-DESINSTALAR LA APLICACION SI YA FUE PREVIAMENTE INSTALADA
-Instalar
Enviar valor del campo en evento blur con javascript
<input value="" (blur)="guardar($event.target.value)">
Suscribirse a:
Entradas (Atom)
