2013-03-17 5 views
0

Теперь я делаю это нравится:Как получить группу, к которой принадлежит SVGElement?

NodeList* elementsUsingTagG = [third_floor.DOMDocument getElementsByTagName:@"g"]; 
auds = [elementsUsingTagG.internalArray objectAtIndex:1]; 
SVGElement *elem = (SVGElement*)[third_floor.DOMDocument getElementById:hitLayer.name]; 
if ([auds.childNodes.internalArray containsObject:elem]) 
{ 
    [self deselectTappedLayer]; 
    lastTappedLayer = hitLayer; 

    if (lastTappedLayer != nil) 
    { 
     lastTappedLayer.opacity = 1.0f; 
     NSLog(@"Clicked on auditory %@, highlight it!", hitLayer.name); 
    } 
} 

Могу ли я получить некоторое свойство SVGElement/CALayer/узел, который идентифицирует группу, которой этот эль принадлежит? Спасибо

+0

Вы имеете в виде перемещение вверх к первому родительскому узлу это 'g'-tag? –

+0

Я имею в виду, есть ли способ получить имя группы элементов, если оно содержится в любой группе. Итак, другими словами, да, перейдите вверх, пока не будет найден какой-либо g-тэг, или будет получен корневой узел. – Aft3rmath

ответ

1

Что-то вроде этого, я думаю. Я не тестировал код, но надеюсь, он может вам помочь.

Итерационная версия:

- (Element *)findFirstParentElementFromNode:(Node *)node 
           withTagName:(NSString *)tagName { 
    for (node = node.parentNode; node != nil; node = node.parentNode) { 
     if (![node isKindOfClass:[Element class]]) { 
      continue; 
     } 

     Element *element = (Element *)node; 
     if([element.tagName isEqualToString:tagName]) { 
      return element; 
     } 
    } 

    return nil; 
} 

Рекурсивная версия:

- (Element *)findFirstParentElementFromNode:(Node *)node 
           withTagName:(NSString *)tagName { 
    if (node.parentNode == nil) { 
     return nil; 
    } 

    if ([node.parentNode isKindOfClass:[Element class]]) { 
     Element *element = (Element *)node.parentNode; 
     if([element.tagName isEqualToString:tagName]) { 
      return element; 
     } 
    } 

    return [self findFirstParentElementFrom:node.parentNode 
           withTagName:tagName]; 
} 

И использовать один из них, как это в вашем случае:

Element *groupElement = [self findFirstParentElementFromNode:elem 
               withTagName:@"g"]; 
+0

, а затем просто введите свойство 'name'' Element'? – Aft3rmath

+0

Хмм не уверен. Под «именем» вы подразумеваете какое-то название группы? возможно, вы ищете атрибут id? Например. 'NSString * groupId = [groupElement getAttribute: @" id "]' –

+0

Если нет, можете ли вы разместить образец SVG где-нибудь и описать, какую группу SVG вы хотите найти, когда элемент svg используется. –

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

  • Нет связанных вопросов^_^