XNA WP7上的广告
本文关键字:WP7 XNA | 更新日期: 2023-09-27 18:21:48
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 个类型参数
我一直都是这样做的。
声明委托的格式,所有处理程序都将使用此格式
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;
}
用
这个替换 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);
}