private void gcw_PositionChanged(object sender, GeoPositionChangedEventArgs e)
{
// Stop the GeoCoordinateWatcher now that we have the device location.
this.gcw.Stop();
bannerAd.LocationLatitude = e.Position.Location.Latitude;
bannerAd.LocationLongitude = e.Position.Location.Longitude;
AdGameComponent.Current.Enabled = true;
}
知道是什么导致了这个错误吗?
public void CreateAd()
{
int width = 480;
int height = 80;
int x = (GraphicsDevice.Viewport.Bounds.Width - width) / 2;
int y = 720;
bannerAd = adGameComponent.CreateAd(AdUnitId, new Rectangle(x, y, width, height),
true);
// Set some visual properties (optional).
//bannerAd.BorderEnabled = true; // default is true
//bannerAd.BorderColor = Color.White; // default is White
//bannerAd.DropShadowEnabled = true; // default is true
// Provide the location to the ad for better targeting (optional).
// This is done by starting a GeoCoordinateWatcher and waiting for the location to
// available.
// The callback will set the location into the ad.
// Note: The location may not be available in time for the first ad request.
adGameComponent.Enabled = false;
this.gcw = new GeoCoordinateWatcher();
this.gcw.PositionChanged += new
EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>
(gcw_PositionChanged);
this.gcw.Start();
}
Error 1 Using the generic type 'System.Device.Location.GeoPositionChangedEventArgs<T>' requires 1 type arguments
&安培;&安培;
错误2使用泛型类型'System.Device.Location.GeoPositionChangedEventArgs'需要1个类型参数
答案 0 :(得分:2)
这就是我一直以来的做法。
声明委托的格式,所有处理程序都将使用此格式
public delegate void gcw_PosChangedEventHandler(GeoPositionChangedEventArgs args);
声明其他人可以注册的事件
public event gcw_PosChangedEventHandler gcw_PosChanged;
注册活动
someOtherClass.gcw_PosChanged += this.gcw_PositionChanged;
通过直接触发事件使事件发生。
// Inside of 'someOtherClass'
gcw_PosChanged(args);
处理我们之前几步注册的事件。
private void gcw_PositionChanged(GeoPositionChangedEventArgs args)
{
// Stop the GeoCoordinateWatcher now that we have the device location.
this.gcw.Stop();
bannerAd.LocationLatitude = e.Position.Location.Latitude;
bannerAd.LocationLongitude = e.Position.Location.Longitude;
AdGameComponent.Current.Enabled = true;
}
答案 1 :(得分:2)
使用此替换deletestate下面的所有内容,它将起作用
public void CreateAd()
{
// Create a banner ad for the game.
int width = 480;
int height = 80;
int x = (GraphicsDevice.Viewport.Bounds.Width - width) / 2; // centered on the display
int y = 720;
bannerAd = adGameComponent.CreateAd(AdUnitId, new Rectangle(x, y, width, height), false);
// Add handlers for events (optional).
//nextAd.ErrorOccurred += new EventHandler<Microsoft.Advertising.AdErrorEventArgs>(bannerAd_ErrorOccurred);
// nextAd.AdRefreshed += new EventHandler(bannerAd_AdRefreshed);
// Set some visual properties (optional).
//bannerAd.BorderEnabled = true; // default is true
//bannerAd.BorderColor = Color.White; // default is White
//bannerAd.DropShadowEnabled = true; // default is true
// Provide the location to the ad for better targeting (optional).
// This is done by starting a GeoCoordinateWatcher and waiting for the location to be available.
// The callback will set the location into the ad.
// Note: The location may not be available in time for the first ad request.
adGameComponent.Enabled = false;
this.gcw = new GeoCoordinateWatcher();
this.gcw.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(gcw_PositionChanged);
this.gcw.Start();
}
public void removeAd()
{
// if only running one ad, use this
adGameComponent.RemoveAd(bannerAd);
// if running multiple ads, use this
// adGameComponent.RemoveAll();
}
/// <summary>
/// This is called whenever a new ad is received by the ad client.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bannerAd_AdRefreshed(object sender, EventArgs e)
{
Debug.WriteLine("Ad received successfully");
}
/// <summary>
/// This is called when an error occurs during the retrieval of an ad.
/// </summary>
/// <param name="sender"></param>
/// <param name="e">Contains the Error that occurred.</param>
private void bannerAd_ErrorOccurred(object sender, Microsoft.Advertising.AdErrorEventArgs e)
{
Debug.WriteLine("Ad error: " + e.Error.Message);
}
private void gcw_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
// Stop the GeoCoordinateWatcher now that we have the device location.
this.gcw.Stop();
bannerAd.LocationLatitude = e.Position.Location.Latitude;
bannerAd.LocationLongitude = e.Position.Location.Longitude;
AdGameComponent.Current.Enabled = true;
Debug.WriteLine("Device lat/long: " + e.Position.Location.Latitude + ", " + e.Position.Location.Longitude);
}