Antonio Linares wrote:Subida la Clase TAcceleroMeter basada en el código publicado por Manuel
y samples/accel.prg
Antonio muy buena la implementación . Ahora tenemos que dar un paso más .
Ahora mismo detectamos si hay movimiento , pero no nos vale para nada mas . Si lo que queremos es poder dibujar una imagen y controlarla en pantalla ( tipo juego laberinto, por ejemplo ) lo que realmente debemos "devolver" a Harbour son las coordenadas y en fivephone podemos controlar si detectamos movimiento o un determinado cambio de cordenadas y obrar en consecuencia .
Mira este codigo ... tres progress que funcionan tipo lo de la tele con la f1
- Code: Select all Expand view RUN
- ( void ) accelerometer : ( UIAccelerometer * ) accelerometer didAccelerate : ( UIAcceleration * ) acceleration
{
labelX.text = [NSString stringWithFormat:@"%@%f", @"X: ", acceleration.x];
labelY.text = [NSString stringWithFormat:@"%@%f", @"Y: ", acceleration.y];
labelZ.text = [NSString stringWithFormat:@"%@%f", @"Z: ", acceleration.z];
self.progressX.progress = ABS(acceleration.x);
self.progressY.progress = ABS(acceleration.y);
self.progressZ.progress = ABS(acceleration.z);
}
Se me ocurre algo asi :
- Code: Select all Expand view RUN
@interface AccelDelegate : NSObject <UIAccelerometerDelegate>
{
NSInteger acex ;
NSInteger acey ;
NSInteger acez ;
}
- (NSInteger)getResultx;
- (NSInteger)getResulty;
- (NSInteger)getResultz;
@end
@implementation AccelDelegate
- ( void ) accelerometer : ( UIAccelerometer * ) accelerometer didAccelerate : ( UIAcceleration * ) acceleration
{
acex = ABS(acceleration.x);
acey = ABS(acceleration.y);
acez = ABS(acceleration.z);
}
-(NSInteger)getResultx
{
return acex ;
}
-(NSInteger)getResulty
{
return acey ;
}
-(NSInteger)getResultz
{
return acez ;
}
@end
HB_FUNC( CREATEACCELEROMETER )
{
UIAccelerometer * accel = [ UIAccelerometer sharedAccelerometer ];
AccelDelegate * delegate = [ [ AccelDelegate alloc ] init ];
accel.updateInterval = 1.0f / 10.0f;
accel.delegate = delegate;
hb_retnl( ( LONG ) accel );
}
HB_FUNC( GETACCELEROMETERX )
{
UIAccelerometer * accel = (UIAccelerometer * ) h_parnl(1) ;
NSInteger acex = [accel.delegate getResultx];
hb_retnl( acex)
}
HB_FUNC( GETACCELEROMETERY )
{
UIAccelerometer * accel = (UIAccelerometer * ) h_parnl(1) ;
NSInteger acey = [accel.delegate getResulty];
hb_retnl( acey)
}
HB_FUNC( GETACCELEROMETERZ )
{
UIAccelerometer * accel = (UIAccelerometer * ) h_parnl(1) ;
NSInteger acez = [accel.delegate getResultz];
hb_retnl( acez)
}
Saludos.