2013-07-03 2 views
1

Я делаю столкновение в Windows Phone App для Windows Phone 8 с помощью Microsoft Visual Studio 2012. Я использовал Rect для создания границы прямоугольника для мяч. Я получил эту ошибку. 'System.Windows.Rect' не содержит определения для 'Intersects' и никакого метода расширения 'Intersects', принимающий первый аргумент типа 'System.Windows.Rect', может быть найден (вам не хватает директивы using или ссылки на сборку ?) Коды приведены ниже.'System.Windows.Rect' не содержит определения для 'Intersects' для C#

var greenBallPositionX1 = Canvas.GetLeft(this.greenBall1); 
var greenBallPositionY1 = Canvas.GetTop(this.greenBall1); 

Rect r1 = new Rect(greenBallPositionX1, greenBallPositionY1, greenBall1.ActualWidth, greenBall1.ActualHeight); 

var blueBallPositionX1 = Canvas.GetLeft(this.blueBall1); 
var blueBallPositionY1 = Canvas.GetTop(this.blueBall1); 

Rect r2 = new Rect(blueBallPositionX1, blueBallPositionY1, blueBall1.ActualWidth, blueBall1.ActualHeight); 

if (r1.Intersects(r2)) 
     { 
      MessageBox.Show("Collision Detected"); 
     } 
+0

Используйте '' intersect' как r1.Intersect (r2) ', если пересечение не существует он вернет 'Rect.Empty'. 'if (r1.Intersect (r2)! = Rect.Empty)' – Cyclonecode

+0

@KristerAndersson Он не обнаруживает его. –

+0

Нужно посмотреть на документацию? Метод 'Intersect()' класса 'Rect' возвращает прямоугольник пересечения или' Rect.Empty', если пересечение не найдено. – Cyclonecode

ответ

2

собственные пересекается можно записать в виде

public bool Intersects(Rect r1,Rect r2) 
{ 
    r1.Intersect(r2); 

    if(r1.IsEmpty) 
    { 
    return false; 
    } 
    else 
    { 
    return true; 
    } 
} 

, то вы можете использовать

if(Intersects(r1,r2)) 
{ 
    MessageBox.Show("Collison Detected"); 
} 
+0

if (r1.Intersect (r2) .IsEmpty) не может его использовать. –

+0

Я обновил свой код, пожалуйста, проверьте ... –

0

синтаксис:

Rect.Intersect(Rect) 

Потерять "S"!

http://msdn.microsoft.com/en-us/library/ms558125.aspx

+0

Спасибо. Однако произошла новая ошибка. «Невозможно неявно преобразовать тип« void »в« bool ». Могу ли я узнать, как мне решить об этом? –

+0

Хенк ответил, что выше. – anthr

Смежные вопросы